为什么imread加载图像后像素值为0 ?
why the pixel value is 0 after load the image by imread?
我使用imread(..)将图像(png)文件直接从3通道加载到1通道。(-灰度),我可以看到灰度图像,但像素值是0,而不是1。任何帮助都是感激的!
cv::Mat image=cv::imread(filename1, CV_LOAD_IMAGE_GRAYSCALE);
if (!image.data){
std::cout<<"Problem laoding image";
}
cv::namedWindow("Window1");
cv::imshow("Window1",image);
for (i=0;i<720;i++){
for (j=0;j<720;j++){
std::cout<<image.at<int>(j,i)<<std::endl;
//printf("%d t", vPixel);
}
}
OpenCV将图像加载为CV_8UCX(在您的情况下,它将是CV_8UC1)类型。因此,要打印所有像素值,您应该使用模板参数unsigned char
或uchar
调用at()
:
for (int i = 0;i < image.rows; i++) {
for (int j = 0; j < image.cols; j++) {
std::cout<<image.at<uchar>(i, j)<<std::endl;
}
}
- 记住在你的代码中翻转i和j。
- 灰度值的范围是0(黑色)-255(白色),所以如果像素是纯白色,你可能会看到255而不是1。
相关文章:
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何在24位SDL_Surface上设置像素的颜色
- 如何从SDL_Surface获取特定像素的颜色
- 如何将CMSampleBufferRef/CIImage/UIImage转换为像素,例如uint8_t[]
- 在C++中查找像素 RGB 数据的最快方法是什么?
- 是否可以从 OpenGL 缓冲区获取原始大小的像素?
- 选择基于另一个垫子的非零像素的cv::Mat的一部分?
- 如何使用 sdl2 快速绘制像素网格?
- 如何在C++中进行像素操作? - Linux
- 他们如何将红外锁定像素转换为镜头前方 1m 的正常平面上的位置
- 访问随机图像像素的快速方法,最多一次
- OpenCV 像素访问点与 at() - 不同的值
- 如何使用 freetype2 访问单色位图中的像素状态
- 尝试渲染像素坐标时,简单线条渲染失败
- 计算另一个图像像素满足条件的像素值的平均值
- 如何返回定义良好的内存部分?例如来自图像数据的像素的颜色值
- 在Qt-cpp中通过像素获取QString的子字符串
- 为什么imread加载图像后像素值为0 ?
- Android OpenCV imread 标志致命异常,imread 在没有标志的情况下工作正常,像素输出与 MATLAB 不匹配