用opencv写一个视频椒盐噪声的降噪程序
时间: 2023-10-08 15:09:32 浏览: 70
好的,以下是用 OpenCV 写的视频椒盐噪声降噪程序的代码:
```python
import cv2
# 读取视频
cap = cv2.VideoCapture('input.mp4')
# 获取视频的帧率、宽度和高度
fps = int(cap.get(cv2.CAP_PROP_FPS))
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 创建视频编码器并打开输出视频文件
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, fps, (width, height))
# 定义卷积核
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
# 添加椒盐噪声
noise = cv2.randu(frame, 0, 255)
white = noise > 250
black = noise < 5
frame[white] = 255
frame[black] = 0
# 中值滤波降噪
median = cv2.medianBlur(frame, 5)
# 形态学开运算降噪
opening = cv2.morphologyEx(median, cv2.MORPH_OPEN, kernel)
# 写入输出视频文件
out.write(opening)
cv2.imshow('frame', opening)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
out.release()
cv2.destroyAllWindows()
```
这个程序会读取名为 `input.mp4` 的视频文件,并在每一帧上添加椒盐噪声。然后,通过中值滤波和形态学开运算来降噪,最后将处理后的帧写入名为 `output.avi` 的输出视频文件中。在处理过程中,程序还会显示每一帧的处理结果。
阅读全文