视频的读取,显示和保存

xiaoxiao2021-02-27  264

用摄像头捕获视频

import cv2 #创建一个 VideoCapture 对象,参数可以是设备的索引号,或者是一个视频文件 cap = cv2.VideoCapture(0) #设备索引号就是在指定要使用的摄像头。一般的笔记本电脑都有内置摄像头。所以参数就是 0。 while(True): #读帧 ret, frame = cap.read() cv2.imshow('frame',frame) #显示一帧图像 if cv2.waitKey(1) & 0xFF == ord('q'): #一毫秒刷新一次图像,等待键盘输入 break cap.release() cv2.destroyAllWindows() cap.read() 返回两个值,先返回一个布尔值,如果视频读取正确,则为 True,如果错误,则为 False,也可用来判断是否到视频末尾。再返回一个值,为每一帧的图像,该值是一个三维矩阵cap.get(propId) 可以获取到视频的一些参数信息cap.set(propId,value) 可以设置新的值 // propId 0) CV_CAP_PROP_POS_MSEC 视频文件的当前位置,以毫秒为单位. 1) CV_CAP_PROP_POS_FRAMES 接下来要解码/捕获的帧的基于0的索引。 2) CV_CAP_PROP_POS_AVI_RATIO 视频文件的相对位置:0 - 电影的开始,电影的1 - 结束。 3) CV_CAP_PROP_FRAME_WIDTH 视频流中帧的宽度。 4) CV_CAP_PROP_FRAME_HEIGHT 视频流中帧的高度. 5) CV_CAP_PROP_FPS 帧率. 6) CV_CAP_PROP_FOURCC 编解码器的4个字符代码. 7) CV_CAP_PROP_FRAME_COUNT 视频文件中的帧数。 8) CV_CAP_PROP_FORMAT 通过retrieve()返回的Mat对象的格式。 9) CV_CAP_PROP_MODE 指示当前捕获模式的后端特定值。 10) CV_CAP_PROP_BRIGHTNESS 图像的亮度(仅适用于相机)。 11) CV_CAP_PROP_CONTRAST 图像对比(仅适用于相机). 12) CV_CAP_PROP_SATURATION 图像饱和度(仅适用于相机)。 14) CV_CAP_PROP_HUE 图像的色相(仅适用于相机)。 15) CV_CAP_PROP_GAIN 获取图像(仅适用于相机)。 16) CV_CAP_PROP_EXPOSURE 曝光(仅适用于相机)。 17) CV_CAP_PROP_CONVERT_RGB 指示其他图像应转换为RGB的布尔标志。 18) CV_CAP_PROP_WHITE_BALANCE 目前不支持 19) CV_CAP_PROP_RECTIFICATION 立体声整流标志相机(注意:仅支持DC1394 v 2.x后端)

从文件中播放视频

import cv2 #创建一个 VideoCapture 对象,参数可以是设备的索引号,或者是一个视频文件 cap = cv2.VideoCapture("E://test.mp4") #参数为视频路径 #获取视频相关参数 fps = cap.get(5) height,width = cap.get(3),cap.get(4) print("帧率:",fps) print("高度:",height) print("宽度:",width) #设置视频相关参数 cap.set(0,10000) #设置初始视频位置 while(True): #读帧 ret, frame = cap.read() cv2.imshow('frame',frame) #显示一帧图像 if cv2.waitKey(1) & 0xFF == ord('q'): #一毫秒刷新一次图像,等待键盘输入 break cap.release() cv2.destroyAllWindows()

写视频

在我们捕获视频,并对每一帧都进行加工之后我们想要保存这个视频。对于图片很简单只需要使用 cv2.imwrite()。但对于视频来说就要多做点工作。 这次我们要创建一个 VideoWriter 的对象。我们应该确定一个输出文件的名字。接下来指定 FourCC 编码(下面会介绍)。播放频率和帧的大小也都需要确定。最后一个是 isColor 标签。如果是 True,每一帧就是彩色图,否则就是灰度图。 FourCC 就是一个 4 字节码,用来确定视频的编码格式。可用的编码列表 可以从fourcc.org查到。这是平台依赖的。

import cv2 cap = cv2.VideoCapture(0) fourcc = cv2.VideoWriter_fourcc(*'XVID') #指定 FourCC 编码,确定视频的编码格式 out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480),True) #创建一个 VideoWriter 的对象。 while(cap.isOpened()): ret, frame = cap.read() if ret==True: out.write(frame) #将该帧图像写出 cv2.imshow('frame',frame) if cv2.waitKey(1)& 0xFF== ord("q"): break else: break cap.release() out.release() cv2.destroyAllWindows()
转载请注明原文地址: https://www.6miu.com/read-12277.html

最新回复(0)