Opencv:访问灰度图像的像素

时间:2014-12-14 20:30:11

标签: c++ opencv

我知道这个问题可以通过专家联系,但我想在openCV中访问灰度图像的像素。我使用以下代码:

cv::Mat img1 = cv::imread("bauckhage.jpg", CV_LOAD_IMAGE_GRAYSCALE);

现在,如果我想使用img1.at<float>(255,255)打印任何像素(比如位置255,255),我会得到0,这实际上不是黑色像素。我认为图像已被读作2d Matrix。

实际上我想对每个像素进行一些计算,因为我需要明确地访问每个像素。

任何帮助或建议都将不胜感激。

2 个答案:

答案 0 :(得分:2)

你必须这样做

   int x = (int)(img.at<uchar>(j,i))

这是因为图像的存储方式和img.at的工作方式。灰度图像以CV_8UC1格式存储,因此它基本上是uchar类型的数组。因此,返回值为uchar,您可以将其转换为int以对其进行操作。

此外,这与您的问题类似: accessing pixel value of gray scale image in OpenCV

答案 1 :(得分:1)

浮动是错误的类型。

如果你读了这样的图像:

cv::Mat img1 = cv::imread("bauckhage.jpg", CV_LOAD_IMAGE_GRAYSCALE);

那么它的类型将是CV_8U,(uchar,每个像素一个灰度字节)。所以,访问它:

uchar &pixel = img1.at<uchar>(row,col);