Python OpenCV 视频抽帧处理并保存

上篇文章中基于OpenCV实现图像处理后,类似的,也可以对视频进行处理。OpenCV库可以将视频的每一帧读取出来,然后对每一帧图像做相应的操作,并保存成新的视频。

  1. 读取视频,获取相关参数
python 复制代码
import cv2
import numpy as np

capture = cv2.VideoCapture(video_name)
width = int(capture.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT))
fps = int(capture.get(cv2.CAP_PROP_FPS))
frame_count = int(capture.get(cv2.CAP_PROP_FRAME_COUNT))
  1. 设置图像处理参数
python 复制代码
# 设置R/G/B因子
red = 149
green = 126
blue = 91

red_factor = np.full((height, width), red-127, dtype="uint8")  # 创建与image相同大小的矩阵
green_factor = np.full((height, width), green-127, dtype="uint8")  # 创建与image相同大小的矩阵
blue_factor = np.full((height, width), blue-127, dtype="uint8")  # 创建与image相同大小的矩阵
  1. 设置保存的视频的信息
python 复制代码
# 设置视频格式
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
# 调用VideoWrite()函数
size = (int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)), int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT)))
video_writer = cv2.VideoWriter(video_name_output, fourcc, fps, size)
  1. 逐帧处理视频图像并保存
python 复制代码
        while True:
            ret, image = capture.read() 
            if not ret:
                break  

            B, G, R = cv2.split(image)  # 分离出图片的B,R,G颜色通道
            R_temp = R + red_factor
            G_temp = G + green_factor
            B_temp = B + blue_factor
            output = cv2.merge([B_temp, G_temp, R_temp])

            if not video_writer is False:
                video_writer.write(output)

            k = cv2.waitKey(20)
            # q键退出
            if k & 0xff == ord('q'):
                break
相关推荐
把我格子衫拿来40 分钟前
VTK 体绘制入门到排错:传递函数、采样距离与透明度的关系
python·vtk·可视化·医学影像·体绘制
张张123y6 小时前
后端第一课:输入 URL 后发生了什么?我用手写 Socket 把全链路跑通了
python·websocket·ai·socket·url·后端开发
晨间晓8 小时前
图片细节丰富不丰富?用华为云码道开发 OpenCV 纹理复杂度分析工具
人工智能·opencv·华为云
全栈弄潮儿8 小时前
Python实战第7期:字典与集合
后端·python·编程语言
2603_965148118 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
xixiaoyunya9 小时前
Python 异步编程入门:用 asyncio 轻松实现并发任务
开发语言·python·php
把我格子衫拿来9 小时前
Dice 很高就够了吗?分割评价中的 IoU、表面距离与 HD95
python·图像分割·模型评估·医学影像·dice
曲径海盗10 小时前
【Python 学习第 31 天】复习:变量与数据类型 等 3 题
python·学习笔记·编程入门
Data_Journal10 小时前
如何绕过 Cloudflare:网页抓取的最佳方法
网络·python
我命由我1234510 小时前
智能助手通用问答边界
人工智能·python·学习·ai·学习方法·ai编程·智能体