Opencv Mat的可视化像素

Visualization pixel with Opencv Mat at

本文关键字:像素 可视化 Mat Opencv      更新时间:2023-10-16

当我运行代码时,我不明白为什么输出是一个奇怪的数字:

int main(int argc, char** argv)
{
    Mat im;
    im = imread("lena.png", CV_LOAD_IMAGE_GRAYSCALE);
    cout << im.at<uchar>(0, 0) << endl;
    waitKey(0);
}

如果我可视化图像,我会看到正确的图像。我哪里错了?

因为它显示符号,如cout << char(123) << endl;

您必须使用int强制转换:

cout << (int) im.at<uchar>(0, 0) << endl;

如官方文档中所述,您不会直接获得实际强度值,而是一个标量。

试试这个:

Scalar intensity = im.at<uchar>(0, 0);
cout << intensity.val[0] << endl;

对于具有多个通道的图像,您可以使用:

Vec3b intensity = im.at<Vec3b>(0, 0);
cout << intensity.val[0] << intensity.val[1] << intensity.val[2] << endl;