Python通过cv2读取多个USB摄像头


Posted in Python onAugust 28, 2019

本文实例为大家分享了Python通过cv2读取多个USB摄像头的具体代码,供大家参考,具体内容如下

通过 cv2 可以轻易的拿到摄像头数据。
比如以下几步就能打开摄像头显示,并通过 q 键保存图片

import cv2

capture = cv2.VideoCapture(0)
# 打开自带的摄像头
if capture.isOpened():
 # 以下两步设置显示屏的宽高
 capture .set(cv2.CAP_PROP_FRAME_WIDTH, 640)
 capture .set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
 
 # 持续读取摄像头数据
 while True:
  read_code, frame = capture.read()
  if not read_code:
   break
  cv2.imshow("screen_title", frame)
  # 输入 q 键,保存当前画面为图片
  if cv2.waitKey(1) == ord('q'):
   # 设置图片分辨率
   frame = cv2.resize(frame, (1920, 1080))
   cv2.imwrite('pic.jpg', frame)
   break
 # 释放资源  
 capture.release()
 cv2.destroyWindow("screen_title")

现在,接入了一个 USB 摄像头,并且希望通过代码同时操作它们,如何实现?
观察到 capture 的 open 函数,传入了摄像头的编号,增加的摄像头编号是递增的。

于是修改如下

import cv2

capture = cv2.VideoCapture(0)
capture_usb = cv2.VideoCapture(1)
# 打开自带的摄像头
if capture.isOpened():
 if capture_usb.isOpened():
 # 以下设置显示屏的宽高
 capture.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
 capture.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
 capture_usb.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
 capture_usb.set(cv2.CAP_PROP_FRAME_HEIGHT, 480)
 
 # 持续读取摄像头数据
 while True:
  read_code, frame = capture.read()
  read_code2, frame2 = capture_usb.read()
  if not read_code or not read_code2:
   break
  cv2.imshow("screen_title", frame)
  cv2.imshow("screen_title_usb", frame2)
  # 输入 q 键,保存当前画面为图片
  if cv2.waitKey(1) == ord('q'):
   # 设置图片分辨率
   frame = cv2.resize(frame, (1920, 1080))
   cv2.imwrite('pic.jpg', frame)
   capture_usb.release()
   break
 # 释放资源  
 capture.release()
 cv2.destroyWindow("screen_title")

尽管这样已经可以同时操作多个摄像头,但如果再接入一个 USB 摄像头,我们无法区分哪一个编号值代表哪个 USB 设备。

检查了实现的源码 (见:cap_8cpp_source.html)

Python通过cv2读取多个USB摄像头

open 函数确实只接收索引参数,并没有其它的同名实现。如果想要通过类似硬件 id 来唯一确定参数,需要单独实现这样的方法。

但通过分析源码发现,getAvailableBackends_CaptureByIndex() 中间有调用到这样的方法,于是大胆猜测摄像头信息应该按照 USB 接入顺序保存在一个数据结构中,因此可以假定按设备插入的先后顺序来判定使用哪个摄像头。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中的作用域规则详解
Jan 30 Python
python 实现删除文件或文件夹实例详解
Dec 04 Python
python与sqlite3实现解密chrome cookie实例代码
Jan 20 Python
python 将列表中的字符串连接成一个长路径的方法
Oct 23 Python
解决python 未发现数据源名称并且未指定默认驱动程序的问题
Dec 07 Python
Python获取网段内ping通IP的方法
Jan 31 Python
Python2 Selenium元素定位的实现(8种)
Feb 25 Python
pyqt5实现登录界面的模板
May 30 Python
Python 3.8中实现functools.cached_property功能
May 29 Python
Django框架组成结构、基本概念与文件功能分析
Jul 30 Python
解决pytorch 交叉熵损失输出为负数的问题
Jul 07 Python
Python Request类源码实现方法及原理解析
Aug 17 Python
python3.5 cv2 获取视频特定帧生成jpg图片
Aug 28 #Python
Django--权限Permissions的例子
Aug 28 #Python
Python中函数的返回值示例浅析
Aug 28 #Python
django认证系统实现自定义权限管理的方法
Aug 28 #Python
Python中注释(多行注释和单行注释)的用法实例
Aug 28 #Python
对Django的restful用法详解(自带的增删改查)
Aug 28 #Python
Python closure闭包解释及其注意点详解
Aug 28 #Python
You might like
Apache, PHP在Windows 9x/NT下的安装与配置 (一)
2006/10/09 PHP
php检测图片木马多进制编程实践
2013/04/11 PHP
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
php smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
thinkphp中的多表关联查询的实例详解
2017/10/12 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
javascript 动态参数判空操作
2008/12/22 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
JS合并数组的几种方法及优劣比较
2014/09/19 Javascript
JavaScript中的标签语句用法分析
2015/02/10 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
JavaScript实现基于十进制的四舍五入实例
2015/07/17 Javascript
jQuery回到顶部的代码
2016/07/09 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
微信小程序实战之顶部导航栏(选项卡)(1)
2020/06/19 Javascript
从源码看angular/material2 中 dialog模块的实现方法
2017/10/18 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
2017/10/24 Javascript
解决layui的radio属性或别的属性没显示出来的问题
2019/09/26 Javascript
本地文件上传到七牛云服务器示例(七牛云存储)
2014/01/11 Python
Python编程实现输入某年某月某日计算出这一天是该年第几天的方法
2017/04/18 Python
使用python爬虫获取黄金价格的核心代码
2018/06/13 Python
python实现计数排序与桶排序实例代码
2019/03/28 Python
使用浏览器访问python写的服务器程序
2019/10/10 Python
Python之关于类变量的两种赋值区别详解
2020/03/12 Python
Python利用matplotlib绘制散点图的新手教程
2020/11/05 Python
美国内衣品牌:Leonisa
2016/08/14 全球购物
加拿大约会网站:EliteSingles.ca
2018/01/12 全球购物
C#中的验证控件有几种
2014/03/08 面试题
什么是lambda函数
2013/09/17 面试题
岗位职责范本
2013/11/23 职场文书
经贸专业毕业生求职信范文
2014/05/01 职场文书
幼儿园课题方案
2014/06/09 职场文书
《月球之谜》教学反思
2016/02/20 职场文书
springboot创建的web项目整合Quartz框架的项目实践
2022/06/21 Java/Android