gpt4 book ai didi

c++ - 为什么imread加载图片后像素值为0?

转载 作者:行者123 更新时间:2023-11-28 07:34:52 26 4
gpt4 key购买 nike

我使用 imread(.., ...-GRAYSCAle) 将图像 (png) 文件直接从 3 channel 加载到 1 channel ,我可以看到灰度图像,但像素值为 0,而不是 1。任何帮助不胜感激!

cv::Mat image=cv::imread(filename1, CV_LOAD_IMAGE_GRAYSCALE);
if (!image.data){
std::cout<<"Problem laoding image";
}

cv::namedWindow("Window1");
cv::imshow("Window1",image);

for (i=0;i<720;i++){
for (j=0;j<720;j++){

std::cout<<image.at<int>(j,i)<<std::endl;
//printf("%d \t", vPixel);
}
}

最佳答案

OpenCV 将图像加载为 CV_8UCX(在您的情况下为 CV_8UC1)类型。因此,要打印所有像素值,您应该使用模板参数 unsigned charuchar 调用 at():

for (int i = 0;i < image.rows; i++) {
for (int j = 0; j < image.cols; j++) {
std::cout<<image.at<uchar>(i, j)<<std::endl;
}
}
  1. 记得在代码中翻转 i 和 j。
  2. 灰度值的范围是 0(黑色)-255(白色),因此如果像素是纯白色,您可能会看到 255 而不是 1。

关于c++ - 为什么imread加载图片后像素值为0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16950942/

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