我正在转换一个图像处理代码从MATLAB到Python使用 OpenCv(Python)。我的原始图像(我们的朋友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,[])似乎可以正常工作。在
有什么方法可以理解或解决这个问题吗?感谢您的意见。谢谢您。在
感谢Miki的评论帮助我解决了这个问题。我把答案贴在这里,以防其他人遇到类似的问题。在
问题是图像类型与噪声数据。当我这么做的时候
image_with_noise.dtype
,它返回一个float64。由于浮点图像显示在[0,1]范围内,任何超过1的值都将显示为白色(这正是发生的情况)。在解决方案是将图像转换为uint8,其中显示范围为[0255]。这可以通过使用cv2中的以下一个衬垫来实现
image_with_noise_uint8=cv2.convertScaleAbs(image_with_noise)
这样,嘈杂的图像显示如预期!在
相关问题 更多 >
编程相关推荐