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

2024-04-18 18:23:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在转换一个图像处理代码从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,[])似乎可以正常工作。在

有什么方法可以理解或解决这个问题吗?感谢您的意见。谢谢您。在

Original image

enter image description here


Tags: 代码图像image命令with朋友cv2噪声
1条回答
网友
1楼 · 发布于 2024-04-18 18:23:04

感谢Miki的评论帮助我解决了这个问题。我把答案贴在这里,以防其他人遇到类似的问题。在

问题是图像类型与噪声数据。当我这么做的时候 image_with_noise.dtype,它返回一个float64。由于浮点图像显示在[0,1]范围内,任何超过1的值都将显示为白色(这正是发生的情况)。在

解决方案是将图像转换为uint8,其中显示范围为[0255]。这可以通过使用cv2中的以下一个衬垫来实现

image_with_noise_uint8=cv2.convertScaleAbs(image_with_noise)

这样,嘈杂的图像显示如预期!在

noisy_image

相关问题 更多 >