使用Python,OpenCV读取视频的每一帧,修改后写入视频 - Go语言中文社区

使用Python,OpenCV读取视频的每一帧,修改后写入视频


使用OpenCV 3将视频写入文件,并保存在自己的磁盘上

尝试只支持avi格式的写入,mp4格式会生成文件但无法播放,格式有错误;

在这里插入图片描述

但是,如果您尝试在自己的应用程序中将视频编写为使用OpenCV归档,请做好以下准备:

  • 对系统上安装的视频编解码器进行研究。
  • 播放各种编解码器和文件扩展名,直到视频成功写入磁盘。

OpenCV操作视频 的方法有:

  1. cv2.VideoWriter
  2. cv2.VideoWriter_fourcc
  3. cv2.cv.FOURCC

创建视频的文档很详细,但成功写入视频文件所需的编解码器和文件扩展名的组合的文档却没有。

我们将使用高效且线程化的VideoStream 使我们可以同时访问内置/ USB网络摄像头和Raspberry Pi摄像头模块。

VideoStream 类在imutils Python包内部实现。您可以阅读 有关VideoStream的更多信息 ,它如何访问多个摄像机输入,并以线程方式高效的读取帧。

视频写入方法需要5个参数:

  • cv2.VideoWriter(outputVideoPath, fourcc, fps, (w * 2, h * 2), True)
  • –output 输出视频文件的路径
  • –fourcc 编解码器
  • –fps 输出视频文件的所需FPS
  • –tuple(w,h) 输出视频的宽度和高度
  • –True 控制是否将彩色框架写入文件。True:表示我们正在编写彩色框,False:表示我们没有写彩色框。
# USAGE
# python write_to_video.py --output example.avi

# 导入必要的包
from __future__ import print_function
# 我们将使用高效且线程化的VideoStream 使我们可以同时访问内置/ USB网络摄像头和Raspberry Pi摄像头模块。
# VideoStream 类在imutils Python包内部实现。您可以阅读有关VideoStream的更多信息【https://www.pyimagesearch.com/2016/01/04/unifying-picamera-and-cv2-videocapture-into-a-single-class-with-opencv/】   类,它如何访问多个摄像机输入,并在本教程中以线程方式有效读取帧。
from imutils.video import VideoStream
import numpy as np
import argparse
import imutils
import time
import cv2

# 构建命令行参数
# --output  输出视频存储的磁盘路径
# --picamera  指定是否要使用Raspberry Pi摄像头模块而不是内置/ USB摄像头。提供> 0的值以访问Pi摄像机模块
# --fps 控制输出视频所需的FPS
# --codec 我们提供FourCC或四个字符的代码,视频编解码器的标识符,压缩格式以及视频文件中的颜色/像素格式。 不同的组合很可能奏效,也可能不奏效;
# MJPG的组合 和.avi 开箱即用,既可以在OSX机器上运行,也可以在Raspberry Pi上工作,因此,如果在将视频写入文件时遇到问题,请务必先尝试这些组合!
ap = argparse.ArgumentParser()
ap.add_argument("-o", "--output", required=True,
                help="path to output video file")
ap.add_argument("-p", "--picamera", type=int, default=-1,
                help="whether or not the Raspberry Pi camera should be used")
ap.add_argument("-f", "--fps", type=int, default=20,
                help="FPS of output video")
ap.add_argument("-c", "--codec", type=str, default="MJPG",
                help="codec of output video")
args = vars(ap.parse_args())

# 初始化视频流,让相机
                        
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_40985985/article/details/106229635
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-06-14 06:24:36
  • 阅读 ( 622 )
  • 分类:

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢