视频处理脚本-分别按红、绿、蓝单通道输出视频

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("视频分离完毕。")

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值