gpt4 book ai didi

c++ - 如何在 Opencv 中显示垫子

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:59:25 24 4
gpt4 key购买 nike

对于存储图像的垫子,使用imshow很容易显示它。但是如果垫子的数据类型是CV_32FC1,我该如何显示这个垫子?

我试过 imshow,但是显示的数字是全白的,当我放大时,它仍然是完全空白的,我看不到 mat 中的 float 。

有谁知道如何显示整个 mat 矩阵吗?

p.s.:感谢您的回复。我将发布一些代码和数字以显示更多详细信息:代码:

Mat mat1;
mat1 = Mat::ones(3,4,CV_32FC1);
mat1 = mat1 * 200;
imshow("test", mat1);
waitKey(0);

Mat dst;
normalize(mat1, dst, 0, 1, NORM_MINMAX);
imshow("test1", dst);
waitKey(0);

mat1.convertTo(dst, CV_8UC1);
imshow("test2", dst);
waitKey(0);

return 0;

输出:

enter image description here

放大 150% 后:

enter image description here

然后放大150%后,我们可以看到'test'是全白的,看不到它的元素值。 'test1' 是全黑的,我们仍然看不到它的元素值。但是对于'test2',它是灰色的,我们可以看到它的元素值为200。

这个实验是否意味着 imshow() 只能显示 CV_8UC1 而我们不能显示任何其他数据类型?

最佳答案

如果 image 是 CV_32F 类型的 Mat,如果图像是 32 位 float ,imshow()将像素值乘以 255 - 即值范围 [0,1] 映射到 [0,255]。所以你的浮点图像必须有一个范围 0 .. 1。

这将显示 CV32F 图像,无论范围是什么:

        cv::Mat dst
cv::normalize(image, dst, 0, 1, cv::NORM_MINMAX);
cv::imshow("test", dst);
cv::waitKey(0);

关于c++ - 如何在 Opencv 中显示垫子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25070701/

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