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使用PIL模块实现给图片打水印的方法
May 22 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
Sep 19 Python
python中利用队列asyncio.Queue进行通讯详解
Sep 10 Python
Python机器学习之SVM支持向量机
Dec 27 Python
python十进制和二进制的转换方法(含浮点数)
Jul 07 Python
浅谈python连续赋值可能引发的错误
Nov 10 Python
python cumsum函数的具体使用
Jul 29 Python
Python类中的装饰器在当前类中的声明与调用详解
Apr 15 Python
Keras中 ImageDataGenerator函数的参数用法
Jul 03 Python
如何解决pycharm调试报错的问题
Aug 06 Python
Python运算符+与+=的方法实例
Feb 18 Python
python非标准时间的转换
Jul 25 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
php xml-rpc远程调用
2008/12/19 PHP
ThinkPHP中实例Model方法的区别说明
2010/08/21 PHP
Laravel 5 学习笔记
2015/03/06 PHP
php从字符串创建函数的方法
2015/03/16 PHP
通过PHP自带的服务器来查看正则匹配结果的方法
2015/12/24 PHP
php基于curl重写file_get_contents函数实例
2016/11/08 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
jquery indexOf使用方法
2013/08/19 Javascript
jQuery Form 页面表单提交的小例子
2013/11/15 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
2015/01/19 Javascript
javascript使用正则表达式实现去掉空格之后的字符
2015/02/15 Javascript
详解Node.js模块间共享数据库连接的方法
2016/05/24 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
2016/08/23 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
zTree树形插件异步加载方法详解
2017/06/14 Javascript
python实现淘宝秒杀聚划算抢购自动提醒源码
2020/06/23 Python
Python学习笔记之视频人脸检测识别实例教程
2019/03/06 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
Python实现语音识别和语音合成功能
2019/09/20 Python
基于Pytorch SSD模型分析
2020/02/18 Python
Python3操作YAML文件格式方法解析
2020/04/10 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
python计算auc的方法
2020/09/09 Python
Electrolux伊莱克斯巴西商店:家用电器、小家电和配件
2018/05/23 全球购物
物理专业大学生职业生涯规划书
2014/02/07 职场文书
医院信息公开实施方案
2014/05/09 职场文书
超市仓管员岗位职责范本
2014/09/18 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
毕业生个人总结
2015/02/28 职场文书
经营目标责任书
2015/05/08 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
如何利用js在两个html窗口间通信
2021/04/27 Javascript
MySql新手入门的基本操作汇总
2021/05/13 MySQL
关于JavaScript轮播图的实现
2021/11/20 Javascript
JS封装cavans多种滤镜组件
2022/02/15 Javascript