import cv2
import numpy as np
# input-输入源 salt_ratio-椒盐中盐的占比 pixel_scale-像素占比
def pepper_salt(input, salt_ratio, pixel_scale):
source = input
noisy_output = np.copy(input) # 传递输入源
# Pepper:
Pepper_sum = np.ceil(pixel_scale * (1.0 - salt_ratio) * source.size)
coordinate = [np.random.randint(0, i - 1, int(Pepper_sum)) for i in source.shape]
noisy_output[coordinate[0], coordinate[1]] = [0, 0, 0]
# Salt:
Salt_sum = np.ceil(pixel_scale * salt_ratio * source.size)
coordinate = [np.random.randint(0, i - 1, int(Salt_sum)) for i in source.shape]
noisy_output[coordinate[0], coordinate[1]] = [255, 255, 255]
cv2.imshow("Pepper Salt", noisy_output)
if __name__ == '__main__':
cap = cv2.VideoCapture(0) # 0-系统摄像
cap.set(3, 640) # 宽
cap.set(4, 480) # 高
cap.set(10, 30) # 亮度 德拉每平米(cd/m2) or nits
while True:
success, frame = cap.read()
cv2.imshow("Original", frame) # 原
pepper_salt(frame, 0.5, 0.05)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
传入参数介绍:
传入的参数有input、noise_ratio和pixel_scale,input可传入的图像或Mat对象,noise_ratio设置椒盐噪声的比例,如代码所示,传入的参数代表帧的50%的区域中随机点的5%将作为盐(白点)。
运行时版本信息:Python36,opencv-python3.4.2.17,pip21.3.1,numpy1.19.5