gpt4 book ai didi

c++ - 如何读取 OpenCV 中的像素值?

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:20 27 4
gpt4 key购买 nike

我正在尝试使用此代码通过此代码计算我的二进制图像像素值:

int main()
{
Mat img;

img=imread("/home/2b.jpeg", CV_LOAD_IMAGE_UNCHANGED);
namedWindow("win", WINDOW_AUTOSIZE);
imshow("win", img);

for(int i=0; i< img.rows ;i++)
{
for(int j=0; j< img.cols ; j++)
{
cout<<setw(10)<<img.at<int>(i,j);
}
cout<<endl<<endl<<endl;
}

waitKey(0);

return 0;
}

但我得到 3 种类型的值:0、-1 和一些大的不同数字,如(24342234、1324244242 等)

问题是什么?我在绘画程序中画了一条黑线并保存了图像,或者从互联网上下载了二进制图像,但我得到了相同的结果!

我想当我使用二进制图像时,我必须为白色像素获取 0,为黑色像素获取 255。

最佳答案

首先,您应该使用 uchar(unsigned char)类型而不是 int 来访问它的像素。

而当 cout 时,您必须显式转换为其他类型,如 int 才能正确打印它,因为 cout 在打印时会很奇怪unsigned char 当它的值大于 127 时。否则,它将打印一些垃圾值(或什么都不打印),因为它只是一个无论如何都会打印的不可打印 ASCII 字符。查看Why "cout" works weird for "unsigned char"? .

cout << setw(10) << (int) img.at<uchar>(i,j);
^^^^^ ^^^^^

关于c++ - 如何读取 OpenCV 中的像素值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23556489/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com