2

我正在寻找一种方法来访问 cv::Mat 对象中灰度像素的值,我能够找到很多答案,我确信它们有效,但对我来说,它们只是不这样做。所以基本上我所拥有的如下:

    gray_image = imread("myimage.png", CV_LOAD_IMAGE_GRAYSCALE);

    equalizeHist(gray_image, eq_image);

    // This line prints garbage
    const unsigned char* row = eq_image.ptr<unsigned char>(10);
    cout << row[10] << endl;

    // This line also prints garbage
    cout << eq_image.at<uchar>(10, 10) << endl;

我只想在位置 (10,10) 中查看像素的灰度 [0,255] 值。我很确定这两条线适用于其他人,但不适用于我,也许这是 Linux 的事情。

如何读取灰度整数中的 cv::Mat 像素?

谢谢,

4

1 回答 1

6

该值打印为 ASCII 字符,这取决于实际值可能是不可打印的垃圾。如果您有兴趣将像素值打印为整数,则需要将该值转换为 anint以获取另一个operator<< 重载

cout << static_cast<int>(row[10]) << endl;
于 2013-03-13T19:47:50.493 回答