我知道可以向专家咨询此问题,但是我想在openCV中访问灰度图像的像素。我正在使用以下代码:

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

现在,如果我想使用img1.at<float>(255,255)打印任何像素(例如在255,255位置),我会得到0,它实际上不是黑色像素。我以为图像已被读取为2D矩阵。

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

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

最佳答案

您将必须这样做

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

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

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

关于c++ - Opencv:访问灰度图像的像素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27473735/

10-15 22:50