无法显示CV_32SC1格式的图像

C++ 的opencv;
我想要显示一个CV_32SC1格式的全黑画面,结果总是报错,把CV_32SC1换成CV_8UC1就正常显示了,请问是什么原因?

这是可以正常显示的

#include<opencv2/opencv.hpp>
#include<iostream>

using namespace cv;
using namespace std;

int main() {
    Mat src = imread("C:/Users/zhufu/Pictures/Saved Pictures/face.jpg");
    if (src.empty()) {
        printf("could not load image...\n");
        return -1;
    }
    namedWindow("input image", WINDOW_AUTOSIZE);
    imshow("input image", src);

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/439436949296182.png "#left")

    Mat img(Size(358, 441), CV_8UC1, Scalar(0));
    namedWindow("Black Image", WINDOW_NORMAL); // 
    imshow("Black Image", img);


    waitKey(0);
    return 0;
}

这是无法显示的

#include<opencv2/opencv.hpp>
#include<iostream>

using namespace cv;
using namespace std;

int main() {
    Mat src = imread("C:/Users/zhufu/Pictures/Saved Pictures/face.jpg");
    if (src.empty()) {
        printf("could not load image...\n");
        return -1;
    }
    namedWindow("input image", WINDOW_AUTOSIZE);
    imshow("input image", src);

    Mat img(Size(358, 441), CV_32SC1, Scalar(0));
    namedWindow("Black Image", WINDOW_NORMAL); // 
    imshow("Black Image", img);


    waitKey(0);
    return 0;
}

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/764957949296116.jpg "#left")


img

img

【以下回答由 GPT 生成】

你好!根据你提供的代码示例,我注意到你是尝试显示一个全黑的CV_32SC1格式的图像,但是报错了。要解决这个问题,我需要更多的上下文信息和错误信息。

请你提供报错信息和其他相关的代码和信息,这样我才能更好地帮助你找到问题的解决方案。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

img


int会先归一化,然后映射到0-255.
之所以你看起来是黑色的,是由于你的像素值比较小,归一化之后映射到255的时候像素值低就是显示的黑色。如果是INT_MAX的像素值,这里就是显示的白色