繁体   English   中英

使用Opencv Mat的可视化像素位于

[英]Visualization pixel with Opencv Mat at

我不明白为什么在运行代码时输出是一个奇数:

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 cast:

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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM