python opencv 读取视频文件并保存

06-python opencv 读取视频文件并保存


  • 06-python opencv 读取视频文件并保存
    • 概述
    • 实现过程
      • 引用
      • 创建摄像头对象
      • 定义写入视频格式和写入对象
      • 逐帧显示视频并写入
      • 释放摄像头对象和窗口
    • 源代码
    • 运行结果
    • 参考

概述

本节实现的是使用内建摄像头捕获视频,并保存视频。

  • 创建摄像头对象
  • 逐帧显示实现视频播放
  • 保存摄像头的每一帧图像

实现过程

引用

不再赘述,代码如下。

import cv2
import numpy

创建摄像头对象

使用opencv自带的VideoCapture()函数定义摄像头对象,其参数0表示第一个摄像头,一般就是笔记本的内建摄像头。

cap = cv2.VideoCapture(0)

定义写入视频格式和写入对象

利用cv2.cv.FOURCC(*’XVID’)定义视频格式,然后创建视频写入对象。

# Define the codec and create VideoWriter object
fourcc = cv2.cv.FOURCC(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20, (640, 480))

逐帧显示视频并写入

在while循环中,利用视频对象的read()函数读取视频的某帧,并显示,并写入视频。然后等待1个单位时间,如果期间检测到了键盘输入q,则退出,即关闭窗口。

while(1):
    # get a frame
    ret, frame = cap.read()
    # save a frame
    out.write(frame)
    # show a frame
    cv2.imshow("capture", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

释放摄像头对象和窗口

调用release()释放摄像头,调用destroyAllWindows()关闭所有图像窗口。

cap.release()
out.release()
cv2.destroyAllWindows()  

源代码

整个程序的源代码如下:

# created by Huang Lu
# 27/08/2016 17:05:45
# Department of EE, Tsinghua Univ.

import cv2
import numpy as np

cap = cv2.VideoCapture(0)

# Define the codec and create VideoWriter object
fourcc = cv2.cv.FOURCC(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20, (640, 480))

while(1):
    # get a frame
    ret, frame = cap.read()
    # save a frame
    out.write(frame)
    # show a frame
    cv2.imshow("capture", frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
cap.release()
out.release()
cv2.destroyAllWindows() 

也可以参考我的GitHub上的,点击这里

运行结果

本次输出的视频为:https://raw.githubusercontent.com/hlthu/Python/master/Python_OpenCV/Save_Vedio/output.avi

在命令行进入该源程序所在目录后,运行python main.py后即可显示结果。显示结果如下:

参考

时间: 2024-11-01 18:18:43

python opencv 读取视频文件并保存的相关文章

python opencv 读取视频文件并显示

06-python opencv 读取视频文件并显示 06-python opencv 读取视频文件并显示 概述 实现过程 引用 创建摄像头对象 逐帧显示实现视频播放 释放摄像头对象和窗口 源代码 运行结果 参考 概述 本节实现的是使用内建摄像头捕获视频,并显示视频的每一帧以实现视频的播放. 创建摄像头对象,指向文件 逐帧显示实现视频播放 实现过程 引用 不再赘述,代码如下. import cv2 import numpy 创建摄像头对象 使用opencv自带的VideoCapture()函数定

ios-NSBundle 读取视频文件

问题描述 NSBundle 读取视频文件 NSString *path = [[NSBundle mainBundle]pathForResource:@"comp1" ofType:@"mov"]; 我在开发时想进行视频播放,但是通过路径读取时总是返回的null.我确定将视频拖进去时已经拷贝进了工程. 我用同样方法将图片和mp3读取都没有问题,但是视频mov和mp4格式等都读不了. 等解释啊!! 解决方案 视频拷贝进了工程,没有AddFile 吧?在终端查找一下路

Python OpenCV 读取并显示图像

01-Python OpenCV 读取并显示图像 01-Python OpenCV 读取并显示图像 概述 实现过程 引用 打开图片并显示 创建一个空图 将彩色图像转成灰度图像 等待键盘输入并关闭所有窗口 源代码 运行结果 参考 概述 Python作为一门极其易学的语言,在科学计算等领域存在较大的应用,同样,著名的OpenCV库也发布了支持Python的库,本节主不再介绍如何在Ubuntu上配置Python OpenCV,有需要的同学可以参考这里. 本节将利用Python OpenCV做一个简单的

分享用Python通过读取ini文件操作mysql来发送邮件实例

Python操作Mysql 首先,我习惯将配置信息写到配置文件,这样修改时可以不用源代码,然后再写通用的函数供调用 新建一个配置文件,就命名为conf.ini,可以写各种配置信息,不过都指明节点(文件格式要求还是较严格的):  代码如下 复制代码 [app_info] DATABASE=test USER=app PASSWORD=123456 HOST=172.17.1.1 PORT=3306 [mail] host=smtp.163.com mail_from=zhoujie0111@126

c# 读取数据库文件并保存出现问题 求助!

问题描述 在做一个CAD的二次开发,把数据库中的数据输入程序并用CAD画出.首先做的是把"NODES"中的"X"列读取出来并保存.求问大神为何一直报错:可以正常打开数据库文件:publicstringopenFile(){OpenFileDialogdialog=newOpenFileDialog();dialog.InitialDirectory="c:\temp";dialog.Filter="mdb.File(*.mdb)|*.m

asp读取远程文件并保存到本地代码_小偷/采集

<% dim act,ifLogin,loginUrl,loginActUrl,loginData,fileUrl,fileName act=request.QueryString("act") if(act="do") then   ifLogin=Cint(request.QueryString("ifLogin"))  loginActUrl=request.Form("loginActUrl")  loginDa

php 读取视频文件播放时间长度

<?php function BigEndian2Int($byte_word, $signed = false) { $int_value = 0; $byte_wordlen = strlen($byte_word); for ($i = 0; $i < $byte_wordlen; $i++) { $int_value += ord($byte_word{$i}) * pow(256, ($byte_wordlen - 1 - $i)); } if ($signed) { $sign_m

c++-opencv 摄像头读取视频保存

问题描述 opencv 摄像头读取视频保存 namedWindow("E1",cv::WINDOW_AUTOSIZE); namedWindow("E2",cv::WINDOW_AUTOSIZE); VideoCapture capture(0); Size size((int)capture.get(CV_CAP_PROP_FRAME_WIDTH ),(int)capture.get(CV_CAP_PROP_FRAME_HEIGHT )); VideoWriter

如何利用live555开源库从摄像机抓取视频数据并保存文件?

live555简介 live555是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议(如RTP/RTCP.RTSP.SIP等)的支持.同时,live555实现了对多种音视频编码格式(包括MPEG.H.263+.DV.JPEG等)的流化.接收和处理等的支持.目前,live555已经被用于多款播放器的流媒体播放功能的实现,如VLC.MPlayer.MediaPortal.ivrworx等. live555库文件的编译生成 live555开源项目网址是:http://ww