当前位置: 首页 > 知识库问答 >
问题:

为什么imread加载图像后像素值为0?

宋斌
2023-03-14

我使用imread(………-GRAYSCAle)将图像(png)文件直接从3个通道加载到1个通道,我可以在灰度上看到图像,但像素值是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);
    }
}

共有1个答案

韦智刚
2023-03-14

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
 类似资料:
  • 我正在尝试使用图像编辑器(如MS paint或paint.net)在图像上绘制固定颜色的边界框(如RGB=255,0,0的纯红色),然后在python中加载图像(如opencv imread),方法是查找具有此RGB值(或0,0,255中的BGR值)的像素,以便创建用于对象检测的标签。 但是,在保存并加载图像后,我看不到任何具有这种RGB或BGR值的像素。相反,这些像素在一个值范围内,这个值可能与

  • 我正在尝试使用Glide在Listview中加载一些图像。如果加载图像时未使用占位符,则图像将正确加载。然而,当我试图设置占位符时,我正在通过网络加载的图像似乎被拉伸了。这仅在使用占位符图像的情况下发生。如果我离开屏幕并返回(因此没有加载占位符图像),则图像会正确显示。 这是我的简单Glide实现:

  • 我有一个非常简单的dockerfile 然后使用 根据我对Docker的了解,当我键入时,它应该只在下显示;但是这不是发生的事情。相反,我看到: 为什么会出现基础图像?例如,我从中提取的存储库 但这并没有出现。那么在这种情况下,为什么会有基础图像呢?

  • 我已经被困在相机里6天了,但没有得到任何适当的解决方案。当我通过相机意图捕获图像时,图像正在旋转。我试图修复方向,但有时它没有在onActivityResult()中给出位图值。当我尝试在ImageView中设置图像时,它会显示一个黑色屏幕。这是我的密码请帮帮我- 我得到的图像在横向模式,但不是在potrait模式。相机预览在拍摄图像后自动旋转90度。

  • 我正在我的网站上实现懒惰加载,但出于某种原因,当图像完全加载并显示时,图像位置会发生变化。 我曾尝试重新安排调用js和css文件的位置,但没有成功。 https://jsfiddle.net/f3q01ha5/3/ 这是没有懒惰加载和我想要的背景位置: 我已经附加了JSFIDLE,但请注意,我无法在这个网站上运行惰性加载,但在本地运行良好。 无论我是否使用延迟加载程序,我都希望背景图像加载到相同的

  • 问题内容: 看了关于SO的其他帖子,他们没有解决此问题。 我正在尝试从jar文件加载图像。它持续为null。该图像位于以下位置: 要加载我正在执行的图像: url为null,bImg也为null。 我已经检查过了,不必担心区分大小写。 问题答案: 试试这个 :