opencv python 从摄像头获取视频、帧率、分辨率等属性设置和使用

文章目录:

1,为了获取视频,你应该创建一个 VideoCapture 对象。他的参数可以是设备的索引号,或者是一个视频文件。设备索引号就是在指定要使用的摄像头。一般的笔记本电脑都有内置摄像头。所以参数就是 0。你可以通过设置成 1 或者其他的来选择别的摄像头。之后,你就可以一帧一帧的捕获视频了。但是最后,别忘了停止捕获视频。使用 ls /dev/video*命令可以查看摄像头设备

2,ret, frame = 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。

官方给出的set(self, propId, value)的函数的定义说明

       def set(self, propId, value): # real signature unknown; restored from __doc__"""set(propId, value) -> retval.   @brief Sets a property in the VideoCapture..   .   @param propId Property identifier from cv::VideoCaptureProperties (eg. cv::CAP_PROP_POS_MSEC, cv::CAP_PROP_POS_FRAMES, ...).   or one from @ref videoio_flags_others.   @param value Value of the property..   @return `true` if the property is supported by backend used by the VideoCapture instance..   @note Even if it returns `true` this doesn't ensure that the property.   value has been accepted by the capture device. See note in VideoCapture::get()"""

注意:

从上面给出的定义说明,有些属性值设置成功之后,即使返回True值,也不代表设置的属性值会被捕捉设备接收,详细参见:VideoCapture::get()。我尝试设置摄像头的帧率,虽然返回True值,但是帧率并没有发生改变。

propld : property id
set(self, propId, value) 函数的定义,第一参数填写属性的id就是propId,当然也可以直接填写属性的全称例如,设置帧的宽度:

cap.set(3, 1080)
等价于
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1080)

第一中设置属性比较简单,第二种设置属性比较直观

set(self, propId, value): 对应的所有属性表如下:

参数 propld 功能
cv2.CAP_PROP_POS_MSEC 0 视频文件的当前位置(以毫秒为单位)或视频捕获时间戳
cv2.CAP_PROP_POS_FRAMES 1 基于0的索引将被解码/捕获下一帧
cv2.CAP_PROP_POS_AVI_RATIO 2 视频文件的相对位置:0 - 视频的开始,1 - 视频的结束
cv2.CAP_PROP_FRAME_WIDTH 3 帧的宽度
cv2.CAP_PROP_FRAME_HEIGHT 4 帧的高度
cv2.CAP_PROP_FPS 5 帧速
cv2.CAP_PROP_FOURCC 6 4个字符表示的视频编码器格式
cv2.CAP_PROP_FRAME_COUNT 7 帧数
cv2.CAP_PROP_FORMAT 8 byretrieve()返回的Mat对象的格式
cv2.CAP_PROP_MODE 9 指示当前捕获模式的后端特定值
cv2.CAP_PROP_BRIGHTNESS 10 图像的亮度(仅适用于相机)
cv2.CAP_PROP_CONTRAST 11 图像对比度(仅适用于相机)
cv2.CAP_PROP_SATURATION 12 图像的饱和度(仅适用于相机)
cv2.CAP_PROP_HUE 13 图像的色相(仅适用于相机)
cv2.CAP_PROP_GAIN 14 图像的增益(仅适用于相机)
cv2.CAP_PROP_EXPOSURE 15 曝光(仅适用于相机)
cv2.CAP_PROP_CONVERT_RGB 16 表示图像是否应转换为RGB的布尔标志
cv2.CAP_PROP_WHITE_BALANCE 17 目前不支持
cv2.CAP_PROP_RECTIFICATION 18 立体摄像机的整流标志

get(self, propId):函数的作用是获取摄像头设置的相关属性值,官方给出的定义如下:

    def get(self, propId): # real signature unknown; restored from __doc__"""get(propId) -> retval.   @brief Returns the specified VideoCapture property.   .   @param propId Property identifier from cv::VideoCaptureProperties (eg. cv::CAP_PROP_POS_MSEC, cv::CAP_PROP_POS_FRAMES, ...).   or one from @ref videoio_flags_others.   @return Value for the specified property. Value 0 is returned when querying a property that is.   not supported by the backend used by the VideoCapture instance..   .   @note Reading / writing properties involves many layers. Some unexpected result might happens.   along this chain..   @code {.txt}.   `VideoCapture -> API Backend -> Operating System -> Device Driver -> Device Hardware`.   @endcode.   The returned value might be different from what really used by the device or it could be encoded.   using device dependent rules (eg. steps or percentage). Effective behaviour depends from device.   driver and API Backend"""

注意:

并非所有的参数都支持所有的摄像机 – 实际上,它们是OpenCV库中最麻烦的部分之一。每种摄像机类型 – 从android摄像机到usb摄像机到专业摄像机提供了一个不同的接口来设置其参数。并且在OpenCV代码中有许多分支来支持尽可能多的分支,但当然不是所有的可能性都被覆盖。
你可以做的是调查你的相机驱动程序,做一个补丁OpenCV,并发送到code.opencv.org。这样别人就会喜欢你的工作,就像你喜欢别人的一样。

Reference:
1、https://segmentfault.com/a/1190000015575701
2、https://blog.csdn.net/qq_31077649/article/details/75194719
3、http://zhaoxuhui.top/blog/2017/05/05/%E5%9F%BA%E4%BA%8EPython%E7%9A%84OpenCV%E5%9B%BE%E5%83%8F%E5%A4%84%E7%90%863.html




♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠ ⊕ ♠

opencv python 从摄像头获取视频、帧率、分辨率等属性设置和使用相关推荐

  1. opencv使用笔记本摄像头获取视频问题解决

    看了半天的OpenCv3.0的书籍,也配置好环境,敲了几个简单的例子,第一次接触图像处理,感觉还是挺有趣味的. 简单的头文件包含 包含cv命名空间,Mat容器,imread();imshow();ge ...

  2. openCV + python实现从摄像头获取视频后,以镜像/水平翻转输出

    opencv + python实现从摄像头获取视频后,以镜像/水平翻转输出 笔者的配置如下: opencv 4.2.0 python 3.7.6 如图,处理前的 摄像头获取并输出的都是翻转后的视频 处 ...

  3. 利用opencv从USB摄像头获取图片

    由于opencv自带的VideoCapture函数直接从usb摄像头获取视频数据,所以用这个来作为实时的图像来源用于实体检测识别是很方便的. 1. 安装opencv 安装的步骤可以按照之前这个文章操作 ...

  4. 利用opencv从USB摄像头获取图片 获得摄像头编号

    本文转自博客园-Arkenstone 由于opencv自带的VideoCapture函数直接从usb摄像头获取视频数据,所以用这个来作为实时的图像来源用于实体检测识别是很方便的. 安装opencv 安 ...

  5. python,ffprobe获取视频信息

    背景 需要获取视频基础信息,如果分辨率.大小.播放时长等,研究发现ffprobe工具已经提供了非常全面的视频信息,用ffprobe分析视频很简单,且看我是怎么在python码中调用ffprobe来提取 ...

  6. opencv获取外接摄像头_利用opencv从USB摄像头获取图片

    由于opencv自带的VideoCapture函数直接从usb摄像头获取视频数据,所以用这个来作为实时的图像来源用于实体检测识别是很方便的. 1. 安装opencv 安装的步骤可以按照之前这个文章操作 ...

  7. ffprobe获取视频的分辨率帧数等信息

    这里演示下如何用ffprobe获取视频的各种信息,ffprobe是和ffmepg一起的,不需要特别安装,只需要有ffmpeg,就自动会带ffprobe. 获取视频的分辨率: ffprobe_path ...

  8. 教你用Python控制摄像头录制视频~

    导语 ​Python如何下载网页上的图片呢? 哈喽哈喽铁汁萌~今天小编给大家分享另一个Python应用小程序,就是:用Python控制摄像头录制视频! 感兴趣的小伙伴耐心往下看哦

  9. python调用摄像头录制视频_Python OpenCV使用摄像头捕获视频

    我们知道,OpenCV是一款强大的跨平台的计算机视觉库,使用它能完成我们对于图像和视频处理的很多功能,今天,我们使用OpenCV来捕获计算机摄像头的视频. 使用OpenCV捕获摄像头视频 我们知道,视 ...

最新文章

  1. ArrayAdapter的使用
  2. python 快速排序
  3. Matplotlib实例教程(六)直方图
  4. 异步执性两个线程,两个线程执行完毕后再进行其他操作
  5. 这个世界上不存在什么弯道超车,只存在正道超车
  6. 云安全并非神话 五个源头严控把关
  7. 批处理计算n天前\后的日期
  8. sql删除重复数据只保留一条的操作方法
  9. 自动化测试用例设计方法
  10. Python 的输出矩阵的一些常用设置
  11. fiddler+xpose_JustTrustMe: 解决app应用在开启抓包工具后无法联网问题
  12. [个人小记]U盘文件超过4g怎么办?
  13. STM32F4型号命名规则
  14. Ubuntu安装jdk(java环境)
  15. 构建大型云计算平台分布式技术的实践
  16. 互联网2B、2C的区别ToB时代的应对策略
  17. matlab绩点计算程序_用Matlab计算学分绩
  18. 『推荐』一款让搜索更快捷的油猴脚本
  19. Android 彩信拦截
  20. Linux关ntp服务,linux下NTP服务

热门文章

  1. Nginx源码研究三:Epoll在NGINX中的使用
  2. 浅谈ANR及log分析ANR
  3. python基础一入门必备知识-python基础教程#菜鸟也能看懂的超简单入门必备知识...
  4. python能用来做什么有意思的事情-可以用 Python 编程语言做哪些神奇好玩的事情?...
  5. python装饰器函数-python之路——装饰器函数
  6. python3.6.5安装教程-Centos7安装python3.6.5
  7. python3.7.4安装教程-Python3.7.4图文安装教程
  8. python大学课程-利用python完成大学刷课(从0到完成的思路)
  9. python编程入门经典 评分-关于 Python 的经典入门书籍有哪些?
  10. python开发系统-python3+django2开发一个简单的人员管理系统