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

时间:2016-02-10 19:39:56

标签: python image matlab opencv

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

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

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

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

当我进行imshow(如下所示)时,我没有像我期望的那样看到带有噪音的图像。

cv2.imshow('image',image_with_noise)

cv2.waitKey(0)

cv2.destroyAllWindows()

然而,类似的MATLAB命令imshow(image,[])似乎工作正常。

有没有办法了解或解决这个问题?您的意见得到赞赏。谢谢。

Original image

enter image description here

1 个答案:

答案 0 :(得分:2)

感谢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