社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
尝试只支持avi格式的写入,mp4格式会生成文件但无法播放,格式有错误;
但是,如果您尝试在自己的应用程序中将视频编写为使用OpenCV归档,请做好以下准备:
用 OpenCV操作视频 的方法有:
创建视频的文档很详细,但成功写入视频文件所需的编解码器和文件扩展名的组合的文档却没有。
我们将使用高效且线程化的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())
# 初始化视频流,让相机
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!