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
相关推荐
lxmyzzs27 分钟前
【图像算法 - 16】庖丁解牛:基于YOLO12与OpenCV的车辆部件级实例分割实战(附完整代码)
人工智能·深度学习·opencv·算法·yolo·计算机视觉·实例分割
R-G-B1 小时前
OpenCV Python——Numpy基本操作(Numpy 矩阵操作、Numpy 矩阵的检索与赋值、Numpy 操作ROI)
python·opencv·numpy·numpy基本操作·numpy 矩阵操作·numpy 矩阵的检索与赋值·numpy 操作roi
细节处有神明1 小时前
Jupyter 中实现交互式图表:ipywidgets 从入门到部署
ide·python·jupyter
小小码农一只1 小时前
Python 爬虫实战:玩转 Playwright 跨浏览器自动化(Chromium/Firefox/WebKit 全支持)
爬虫·python·自动化
hllqkbb2 小时前
人体姿态估计-动手学计算机视觉14
人工智能·opencv·计算机视觉·分类
深盾安全2 小时前
Python脚本安全防护策略全解析(上)
python
杜子不疼.2 小时前
《Python学习之使用标准库:从入门到实战》
开发语言·python·学习
胡耀超2 小时前
从哲学(业务)视角看待数据挖掘:从认知到实践的螺旋上升
人工智能·python·数据挖掘·大模型·特征工程·crisp-dm螺旋认知·批判性思维
tomelrg3 小时前
多台服务器批量发布arcgisserver服务并缓存切片
服务器·python·arcgis
A尘埃3 小时前
Java+Python混合微服务OCR系统设计
java·python·微服务·混合