由于cv.imread()函数只能读取图像的数据,不能读取视频文件,所以对于数据需要从摄像头加载的要求,需要使用cv.VideoCapture()函数,通过该函数可以对摄像头进行调用,并读取视频文件数据。该函数是专门用于处理视频文件读取。

文章目录

  • 前言
  • 二、使用步骤
    • 1.代码展示
    • 2.get(propId)函数
  • cv.VideoCapture()函数调用摄像头

前言

cv.VideoCapture()函数,通过该函数可以对摄像头进行调用,并读取视频文件数据。


# 一、cv.VideoCapture()函数是什么?

从函数的原型中可以得知,cv.VideoCapture()函数是用于构造一个能够读取与处理视频文件的的视频对象,并且函数可以将该视频对象返回。

<VideoCapture object> = cv.VideoCapture()
<VideoCapture object> = cv. VideoCapture(filename,
[,apipreference])#filename:读取的视频文件名称。# apipreference:读取数据时设置的属性,例如编码格式、是否调用OpenNI等

函数的主要作用就是定义一个视频对象,即默认构造函数video = cv.VideoCapture(),通过cv.VideoCapture()函数仅仅是创建VideoCapture对象video,如果需要具体读取视频文件,需要使用该VideoCapture对象的open()函数,通过open()函数指出视频文件的路径以及名称。
例如video.open(“./videos/test.mp4”)表示video视频对象读取在本级文件夹中videos的test.mp4视频文件,将视频数据返回。而且当我们输入错误的视频文件名称时,程序不会报错,而且会继续执行,但是当使用视频对象变量时,程序将会报错。为了避免这个问题,需要通过VideoCapture对象video中的isOpened()函数判断是否成功读取到视频文件数据。如果读取成功返回值为True;如果读取失败,则返回值为False,

二、使用步骤

1.代码展示

代码如下(示例):

import cv2 as cvif __name__ == '__main__':video = cv.VideoCapture()video.open('./video/test.avi')#判断是否成功创建视频流while video.isOpened():ret,frame = video.read()print(ret)if ret is True:cv.imshow('video',frame)#设置播放速速cv.waitKey(int(1000 / video.get(cv.CAP_PROP_FPS)))#按下q键退出if cv.waitKey(1) & 0xFF == ord('q'):breakelse:break#输出相关参数信息print('视频中的图像宽度{}'.format(video.get(cv.CAP_PROP_FRAME_WIDTH))) print('视频中的图像高度{}'.format(video.get(cv.CAP_PROP_FRAME_HEIGHT))) print('视频帧率{}'.format(video.get(cv.CAP_PROP_FPS))) print('视频帧数{}'.format(video.get(cv.CAP_PROP_FRAME_COUNT))) #释放资源并关闭窗口video.release()cv.destroyAllWindows()

cv.VideoCapture()函数不仅仅可以将读取读取的视频数据赋值给申明的变量,而且在读取文件种类上包含多种格式,例如普通视频文件(video.avi)、图像序列或者视频流的URL。通过cv.VideoCapture()函数创建一个视频对象之后,可以利用cv.VideoCapture()对象中的read()函数读取一帧图像,例如ret,frame=video.read(),其中读取一张图像的数据存放在frame中;ret中存放成功读取图片的标志位,如果读取成功,则返回True;若读取失败,则返回False。通常,可以利用ret标志判断视频文件是否到达了末尾。

2.get(propId)函数

cv.VideoCapture对象同时可以利用get(propId)函数来查看视频的属性,通过设定propId获取不同的视频属性,例如视频的宽度、高度、帧数等,其取值为0~18的任意整数,如图2-4所示。Get()方法中propId的可选标志。


## 3. get()方法中propId的可选标志

标志 简记 含义
cv.CAP_PROP_POS_MSEC 0 视频文件的当前位置(以毫秒为单位)
cv.CAP_PROP_POS_FRAMES 1 下一个被解码的帧索引,以0为起点
cv.CAP_PROP_POS_AVI_RATIO 2 视频文件的相关位置,0表示开始,1表示结束
cv.CAP_PROP_FRAME_WIDTH 3 视频流中图像的宽度
cv.CAP_PROP_FRAME_HEIGHT 4 视频流中图像的高度
cv.CAP_PROP_FPS 5 视频流中图像的帧率(每秒帧数)
cv.CAP_PROP_FOURCC 6 编解码器的4字符代码
cv.CAP_PROP_FRAME_COUNT 7 视频流中的帧数
cv.CAP_PROP_FRAME 8 返回的Mat对象的格式
cv.CAP_PROP_MODE 9 指示当前捕捉的模式
cv.CAP_PROP_BRIGHTNESS 10 图像的亮度(仅相机)
cv.CAP_PROP_CONTRAST 11 图像的对比度(仅相机)
cv.CAP_PROP_STAURATION 12 图像饱和度(仅相机)
cv.CAP_PROP_HUE 13 图像的色相(仅相机)
cv.CAP_PROP_GAIN 14 图像的增益(仅相机)
cv.CAP_PROP_EXPOSURE 15 曝光(仅相机)
cv.CAP_PROP_CONVERT_RGB 16 布尔值,确定是否应该将图像转换为RGB格式
cv.CAP_PROP_WHITE_BALANCE_BLUE_U 17 白平衡
cv.CAP_PROP_RECTIFCATION 18 立体相机校正标记

cv.VideoCapture()函数调用摄像头

cv.VideoCapture()函数同时也可以通过调用摄像头的方式来获取视频,其获取方式与从文件中读取视频类似。函数同样返回一个视频对象,只是参数变成了摄像头索引。由于摄像头拍摄的画面可能与实际相反,所以为了解决这个问题,将frame中的数据进行水平翻转处理,即frame=cv.flip(frame,1),实现了摄像头拍摄的图像进行翻转。

<VideoCapture object> = cv. VideoCapture(index,
[,apipreference])#index:摄像头索引,参数0表示使用计算机默认摄像头,同样改用其他参数可以调用其他摄像头。# apipreference:读取数据时设置的属性,例如编码格式、是否调用OpenNI等

读取视频文件python-opencv相关推荐

  1. json字段顺序读取 python_如何利用Python批量读取视频文件的时间长度?

    本期的主题是利用Python来实现对视频文件时间长度的读取. 在学习编程语言时,相比较于通过书本来学习知识,我更喜欢通过观看学习视频的方式来进行学习,通过主讲老师的讲解,我能很直观且快速的了解一些知识 ...

  2. OpenCV读取视频文件的实例(附完整代码)

    OpenCV读取视频文件的实例 OpenCV读取视频文件的实例 OpenCV读取视频文件的实例 #include <iostream> // for standard I/O #inclu ...

  3. OpenCV——读取视频文件并写入文件

    1.代码如下: #include<opencv2/opencv.hpp> using namespace cv;//-----------------------------------[ ...

  4. java opencv 读取视频_java使用OpenCV从视频文件中获取帧

    本文实例为大家分享了java使用OpenCV从视频文件中获取帧的具体代码,供大家参考,具体内容如下 实现功能:使用Java获取mp4.mov.avi等视频文件中的图像帧,每秒获取一帧图像,并保存 环境 ...

  5. VideoCapture 读取视频文件,显示视频(帧)信息

    #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <ope ...

  6. php获取页面视频文件,php获取视频时长_php 读取视频文件播放时间长度

    摘要 腾兴网为您分享:php 读取视频文件播放时间长度,中信期货,中日翻译,一路捞,信和财富等软件知识,以及阳光炫舞,火绒安全软件,qq锁,微信摇一摇抽奖软件,稿定设计软件,开始菜单图标,钩肥大战,g ...

  7. Matlab读取视频文件

    从特定时间或帧索引开始的视频中读取帧,在指定时间间隔内读取帧,或读取视频中的所有帧. 从指定时间或帧索引开始读取帧 从文件开头 0.5 秒开始读取视频文件的一部分.然后,读取从帧索引 100 开始到视 ...

  8. opencv C艹:读取视频文件,保存图像,视频文件,读取保存XML YAML文件

    <opencv4快速入门> 认识认识模块 D:\opencv\build\include\opencv2 路径下 calib3d 主要包含相机标定,立体视觉的功能:物体姿势估计,三维重建, ...

  9. linux opencv 显示视频文件夹,opencv cvCaptureFromFile读取视频问题汇总

    一.无法读取文件 报错: OpenCV报错: warning: Error opening file (../../modules/highgui/src/cap_ffmpeg_impl.hpp:52 ...

  10. python(二)进阶之cv2读取视频文件或摄像头,并进行保存帧图像或视频

    版本 # 4.5.1 python import cv2 cv2.__version__ 函数 # 参数0表示默认为笔记本的内置第一个摄像头,如果需要读取已有的视频则参数改为视频所在路径, # 例如: ...

最新文章

  1. 一份超详细的数据科学路线图!
  2. xml publisher 笔记
  3. iOS 事件传递响应链
  4. wpf资源嵌套,一个资源引用另外一个资源,被引用的资源应该声明在前面
  5. SpringMVC @Transactional的陷井大坑引发No Session found for current thread
  6. MongoDB 5.0 来了,原生时序、版本化 API 新特性悉数登场
  7. 一场游戏平台商与游戏大厂的战争
  8. 500能不能配个玩英雄联盟的电脑?
  9. 微型计算机原理与应用简称为啥,微型计算机原理与应用知识点总结.pdf
  10. wps怎么删除空白页?你学会了吗?
  11. 解决 java.sql.SQLException: ORA-01688: unable to extend table XXX partition YYY by 1024 in tablespace
  12. 项目管理:目标的价值表现的四个方面
  13. Unity|一键复制log日志|小技巧
  14. 《1984》中所描绘的是怎样的一个存在
  15. Unity Shader学习-高光反射
  16. 河南信息统计学院微信公众平台API汇总
  17. vivo计算机的功能是什么意思啊,vivo新系统有啥新功能_vivo新系统有什么功能
  18. asp.net951-基于asp.net的网上购物系统
  19. 搜索引擎的网站登录入口
  20. Java将数字金额转为大写

热门文章

  1. 上海国拍服务器位置,上海国拍系统的重大漏洞
  2. 程序员装b指南(转)
  3. device mapper机制详解
  4. 创建Angular项目及常用命令
  5. 如何将企业微信好友设置为外部联系人
  6. ***WIN2003 PHP服务器的另类技术
  7. 计算机病毒模块测试题,计算机病毒分类测试题集
  8. android 镜像结构,android查看分区和镜像文件的结构
  9. 2019清华大学、中山大学、中传自主招生笔试面试真题
  10. Dapper使用技巧和基础CRUD