python读取和保存视频文件

作者:qq_18343569 时间:2023-11-14 06:10:20 

为了获取视频,应该创建一个 VideoCapture 对象。他的参数可以是设备的索引号,或者是一个视频文件。设备索引号就是在指定要使用的摄像头。

一般的笔记本电脑都有内置摄像头。所以参数就是 0。你可以通过设置成 1 或者其他的来选择别的摄像头。之后,你就可以一帧一帧的捕获视频了。但是最后,别忘了停止捕获视频。


import numpy as np
import cv2
cap=cv2.VideoCapture(0)
while (True):
 ret,frame=cap.read()
 gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
 cv2.imshow("shiyan",gray)
 if cv2.waitKey(1)&0xFF==ord('q'):
   break
cap.release()
cv2.destroyAllWindows()

与c++很类似

cap.read() 返回一个布尔值(True/False)。如果帧读取的是正确的,就是 True。

所以最后你可以通过检查他的返回值来查看视频文件是否已经到了结尾。
有时 cap 可能不能成功的初始化摄像头设备。这种情况下上面的代码会报错。你可以使用 cap.isOpened(),来检查是否成功初始化了。如果返回值是True,那就没有问题。否则就要使用函数 cap.open()。

 你可以使用函数 cap.get(propId) 来获得视频的一些参数信息。这里propId 可以是 0 到 18 之间的任何整数。每一个数代表视频的一个属性其中的一些值可以使用 cap.set(propId,value) 来修改, value 就是你想要设置成的新值。例如,我可以使用 cap.get(3) 和 cap.get(4) 来查看每一帧的宽和高。默认情况下得到的值是 640X480。但是我可以使用 ret=cap.set(3,320)和 ret=cap.set(4,240) 来把宽和高改成 320X240。

2、保存视频

在我们捕获视频,并对每一帧都进行加工之后我们想要保存这个视频。对于图片来时很简单只需要使用 cv2.imwrite()。但对于视频来说就要多做点工作。

   这次我们要创建一个 VideoWriter 的对象。我们应该确定一个输出文件的名字。接下来指定 FourCC 编码。播放频率和帧的大小也都需要确定。最后一个是 isColor 标签。如果是 True,每一帧就是彩色图,否则就是灰度图。FourCC 就是一个 4 字节码,用来确定视频的编码格式。可用的编码列表可以从fourcc.org查到。这是平台依赖的。下面这些编码器对我来说是有用个。

• In Fedora: DIVX, XVID, MJPG, X264, WMV1, WMV2. (XVID is
more preferable. MJPG results in high size video. X264 gives
very small size video)
• In Windows: DIVX (More to be tested and added)
• In OSX : (I don't have access to OSX. Can some one fill this?)

FourCC 码以下面的格式传给程序,以 MJPG 为例:

cv2.cv.FOURCC('M','J','P','G') 或者 cv2.cv.FOURCC(*'MJPG')。

下面的代码是从摄像头中捕获视频,沿水平方向旋转每一帧并保存它。


import numpy as np
import cv2
cap = cv2.VideoCapture(0)
# Define the codec and create VideoWriter object
fourcc = cv2.cv.FOURCC(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
while (cap.isOpened()):
ret,frame=cap.read()
if ret==True:
 frame=cv2.flip(frame,0)
 out.write(frame)
 cv2.imshow("实验",frame)
 if cv2.waitKey(0)&0xFF==ord('q'):
  break
else:
 break
cap.release()
out.release()
cv2.destroyAllWindows()

来源:https://blog.csdn.net/qq_18343569/article/details/50275305

标签:python,读取,视频
0
投稿

猜你喜欢

  • css网页下拉菜单制作方法(2):初步实现

    2007-02-03 11:39:00
  • Python实现的Excel文件读写类

    2022-03-15 19:43:24
  • 云原生使用Docker部署mysql数据库的详细过程

    2024-01-20 15:57:24
  • Python Web框架Flask信号机制(signals)介绍

    2022-12-01 13:52:23
  • 在Sql Server中调用外部EXE执行程序引发的问题

    2024-01-16 07:40:38
  • Python应用实现双指数函数及拟合代码实例

    2023-04-14 18:17:14
  • 序列化Python对象的方法

    2022-07-09 22:51:59
  • python使用pdfminer解析pdf文件的方法示例

    2023-07-31 00:36:47
  • vue使用微信JS-SDK实现分享功能

    2023-07-02 16:59:46
  • MySQL数据库的一次死锁实例分析

    2024-01-27 18:21:58
  • PHP入门基础之注释的写法

    2023-10-20 07:26:17
  • Python BS4库的安装与使用详解

    2021-06-30 02:00:22
  • python实现XML解析的方法解析

    2021-08-20 01:58:58
  • 一文读懂Python 枚举

    2023-02-16 16:12:46
  • Python importlib动态导入模块实现代码

    2022-07-31 05:52:25
  • python四个坐标点对图片区域最小外接矩形进行裁剪

    2022-01-18 02:18:09
  • mysql 查询数据库中的存储过程与函数的语句

    2024-01-26 17:30:35
  • asp函数解决SQL注入漏洞

    2008-10-12 19:53:00
  • Python Flask-web表单使用详解

    2022-07-14 01:55:59
  • Python与Appium实现手机APP自动化测试的示例代码

    2023-07-26 05:06:07
  • asp之家 网络编程 m.aspxhome.com