繁体   English   中英

相当于python OpenCv的MATLAB imshow(I,[]);

[英]Equivalent of MATLAB imshow(I,[ ]) for python OpenCv;

我正在使用OpenCv(Python)将图像处理代码从MATLAB转换为Python。 下面显示的我的原始图像(我们的朋友Lena)使用以下命令读取,使用imshow可以正常显示:

image = cv2.imread('Lena.bmp',0)

我向图像添加了一些高斯噪声

image_with_noise = image + 20*np.random.randn(256,256)

当我显示时(如下图所示),我看不到带有噪点的图像。

cv2.imshow('image',image_with_noise)

cv2.waitKey(0)

cv2.destroyAllWindows()

但是,类似的MATLAB命令imshow(image,[])似乎可以正常工作。

有什么办法可以理解或解决这个问题? 感谢您的投入。 谢谢。

原始图片

在此处输入图片说明

感谢您对Miki的评论,这有助于我解决了问题。 如果其他人遇到类似问题,我会在此处发布答案。

问题是image_with_noise数据的类型。 当我执行image_with_noise.dtype ,它返回一个float64。 由于浮动图像显示在[0,1]范围内,因此任何超过1的值都将显示为白色(正好是这种情况)。

解决方案是将图像转换为uint8,其中显示范围为[0,255]。 可以在cv2中使用以下一根衬管来完成此操作

image_with_noise_uint8=cv2.convertScaleAbs(image_with_noise)

这样,嘈杂的图像将按预期显示!

noisy_image

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM