import cv2
import numpy as np
# 读取输入的视频文件
cap = cv2.VideoCapture('D:\Desktop\IMG_3616.MOV')
# 获取视频的基本信息
fps = cap.get(cv2.CAP_PROP_FPS)
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
# 创建输出视频的写入对象
out_red = cv2.VideoWriter('red_channel_output.mov', cv2.VideoWriter_fourcc(*'mp4v'), fps, (width, height), True)
out_green = cv2.VideoWriter('green_channel_output.mov', cv2.VideoWriter_fourcc(*'mp4v'), fps, (width, height), True)
out_blue = cv2.VideoWriter('blue_channel_output.mov', cv2.VideoWriter_fourcc(*'mp4v'), fps, (width, height), True)
frame_count = 0
while(cap.isOpened()):
ret, frame = cap.read()
if not ret:
break
# 输出处理进度信息
frame_count += 1
print(f'Processing frame {frame_count}')
# 分离红绿蓝通道
blue_channel, green_channel, red_channel = cv2.split(frame)
# 根据单个通道重构颜色图像
frame_red = cv2.merge([np.zeros_like(blue_channel), np.zeros_like(green_channel), red_channel])
frame_green = cv2.merge([np.zeros_like(blue_channel), green_channel, np.zeros_like(red_channel)])
frame_blue = cv2.merge([blue_channel, np.zeros_like(green_channel), np.zeros_like(red_channel)])
# 写入分离后的视频帧
out_red.write(frame_red)
out_green.write(frame_green)
out_blue.write(frame_blue)
cap.release()
out_red.release()
out_green.release()
out_blue.release()
cv2.destroyAllWindows()
print("视频分离完毕。")
视频处理脚本-分别按红、绿、蓝单通道输出视频
于 2024-06-27 16:20:36 首次发布