我正在尝试为视频文件添加噪音。目标是在视频中引入噪音然后保存。
目前的做法:
- 迭代视频的帧。
- 为每一帧添加噪点,然后保存。# 添加来自 skimage 的高斯噪声
- 最后,合并帧并保存视频
伪代码
cam = cv2.VideoCapture(clip_file_path)
while frame < end:
ret_val, input_image = cam.read()
input_image = cv2.cvtColor(input_image, cv2.COLOR_BGR2RGB)
noisy_img = add_noise(input_image, mode) # Adding gaussian noise from skimage
save_frame()
合并帧
frame_rate = 30
codec = cv2.VideoWriter_fourcc(*'mp4v')
out = cv2.VideoWriter(output_video_path, codec, frame_rate, (width, height))
for frame in range(starting_frame, ending_frame):
image = cv2.imread(frame_path_template.format(frame_path=full_extracted_frames_path, pid=pid,
exercise_type=exercise_type,
frame_number=frame))
out.write(image)
out.release()
cv2.destroyAllWindows()
这些是获得的文件大小:
- 原始视频文件:1.5 MB
- 合并后得到的视频:53.7 MB
- 使用压缩后获得的视频:39.6 MB
ffmpeg -i P33_R.mp4 -vcodec libx264 output1.mp4 - 使用压缩和 crf 28 后获得的视频:16.2 MB
ffmpeg -i P33_R.mp4 -vcodec libx264 -crf 28 output1.mp4
我希望最终文件的大小与原始文件相同。真的可以这样做吗?