【发布时间】:2019-05-23 16:07:47
【问题描述】:
我正在尝试使用 opencv-python 将高斯噪声添加到我的图像中。我已经创建了噪声函数,但将噪声函数添加到图像会产生意想不到的结果。
我使用来自 numpy.random 的正态高斯分布创建了一个噪声函数。然后在调整噪声函数的大小后,我将它添加到我的图像中。我尝试打印数组。总和在区间 [0, 255] 中,但图像的一部分也被洗掉了。我还尝试打印数组的数据类型。最初是 uint8 而后来是 float64(我认为这不会有任何区别)。
import numpy as np
import cv2
fast = cv2.imread('Fast8.jpg', 0)
row, col = fast.shape
noise = np.random.normal(0, 1, (row, col))
fast = fast + noise
cv2.namedWindow('Noisy', cv2.WINDOW_NORMAL)
cv2.imshow('Noisy', fast)
cv2.waitKey(0)
cv2.destroyAllWindows()
在上述代码的结果中,我得到了一个褪色的图像,只有一些区域略微可见。
【问题讨论】:
-
您的代码根本没有使用
noise变量。 -
哦,是的,我在写我的问题时实际上错过了那行代码。谢谢你指出这一点。我已经纠正了。你现在能找出问题所在吗?
-
如果将
1更改为0.1会怎样? -
fast是一个浮点数组。cv2.imshow期望浮点数组的值在 [0, 1] 范围内。试试cv2.imshow('Noisy', fast/fast.max())。 -
另请注意,
np.random.normal(0, 1, (row, col))将包含负值,这意味着fast + noise可能具有负值。这就是你想要的吗?
标签: python-3.x numpy opencv4android