OpenCV Mat方法“at”在Linux中返回奇怪的字符

时间:2013-03-13 19:39:55

标签: c++ linux opencv

我正在寻找一种方法来访问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像素?

谢谢,

1 个答案:

答案 0 :(得分:5)

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

cout << static_cast<int>(row[10]) << endl;