打开CV:访问灰度图像的像素

Open CV: Acces pixels of grayscale image

本文关键字:像素 灰度图像 访问 CV 打开      更新时间:2023-10-16

我知道这个问题可以连线给专家,但我想在 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以将其作为整数进行操作。

此外,这类似于您的问题:访问OpenCV中灰度图像的像素值

浮点数在这里是错误的类型。

如果您阅读这样的图像:

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

然后它的类型将是CV_8U(UCar,每像素一个灰度字节)。 因此,要访问它:

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