【发布时间】:2018-11-11 12:04:54
【问题描述】:
我在下面添加的图像(water_coins.jpg)中添加了一些高斯噪声,但它返回给我一个完全白色的空白屏幕(对于“noi”和“hoho”)。我不知道为什么
import numpy as np
import cv2
def gauss_noise(image):
row, col, ch = image.shape
mean = 0
var = 0.01
sigma = var ** 0.5
gauss = np.random.normal(mean, sigma, (row, col, ch))
gauss = gauss.reshape(row, col, ch)
print(image)
cv2.imshow("hoho", gauss + image)
noisy = image + gauss
return noisy
img = cv2.imread('water_coins.jpg')
noi = gauss_noise(img)
cv2.imshow("Noisy Gauss image", noi)
cv2.imshow("ho", img)
cv2.waitKey()
【问题讨论】:
-
浮点值中的图像必须从 0 到 1,您将图像 uint8 添加到图像浮点数......您需要进行饱和度(意味着 0 可以生成负值)然后您有将其转换为 np.uint (至少显示它)或将其标准化为 0-1 值。如果不是,任何大于 1 的值都将显示为白色
-
@api55 转换为 uint8 有效。谢谢
-
@api55 为什么要在评论中给出答案?我建议将您的评论移至实际答案,以便 OP 可以接受它,并且可以考虑回答这个问题。
-
@JonathonReinhart 我的错,我当时没有多少时间,只是发表了评论。但我现在添加它作为一个完整的答案:)
标签: python-3.x image opencv image-processing gaussian