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

Pep*_*zza 2 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;
Run Code Online (Sandbox Code Playgroud)

我只是想在位置(10,10)看到像素的灰度[0,255]值.我很确定这两行可以用于其他人,但不适合我,也许这是一个Linux的东西.

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

谢谢,

moo*_*eep 5

该值打印为ASCII字符,这取决于实际值可能是不可打印的垃圾.如果您有兴趣将像素值打印为整数,则需要将值转换为a int来获取另一个运算符<< overload:

cout << static_cast<int>(row[10]) << endl;
Run Code Online (Sandbox Code Playgroud)