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 相关文章推荐
将图片文件嵌入到wxpython代码中的实现方法
Aug 11 Python
python打开网页和暂停实例
Sep 30 Python
用python找出那些被“标记”的照片
Apr 20 Python
python虚拟环境virtualenv的使用教程
Oct 20 Python
Python实现PS图像调整颜色梯度效果示例
Jan 25 Python
pyspark 读取csv文件创建DataFrame的两种方法
Jun 07 Python
python框架中flask知识点总结
Aug 17 Python
python看某个模块的版本方法
Oct 16 Python
解决python opencv无法显示图片的问题
Oct 28 Python
如何使用Python标准库进行性能测试
Jun 25 Python
Win系统PyQt5安装和使用教程
Dec 25 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
Sep 03 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 checkbox 取值详细说明
2010/08/19 PHP
PHPer 需要了解的 5 个 Composer 小技巧
2014/08/18 PHP
PHP PDOStatement::fetch讲解
2019/01/31 PHP
PHP 枚举类型的管理与设计知识点总结
2020/02/13 PHP
javascript编程起步(第四课)
2007/01/10 Javascript
jQuery下通过replace字符串替换实现大小图片切换
2012/05/22 Javascript
深入浅析JavaScript的API设计原则
2016/06/14 Javascript
js前端解决跨域问题的8种方案(最新最全)
2016/11/18 Javascript
jQuery实现表格元素动态创建功能
2017/01/09 Javascript
jQuery+datatables插件实现ajax加载数据与增删改查功能示例
2018/04/17 jQuery
jQuery+CSS实现的标签页效果示例【测试可用】
2018/08/14 jQuery
angularjs模态框的使用代码实例
2019/12/20 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
[01:24:51]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第二场
2014/05/26 DOTA
浅谈Series和DataFrame中的sort_index方法
2018/06/07 Python
python多进程读图提取特征存npy
2019/05/21 Python
python实现随机漫步方法和原理
2019/06/10 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
Django视图、传参和forms验证操作
2020/07/15 Python
selenium自动化测试入门实战
2020/12/21 Python
美国购买肉、鸭、家禽、鹅肝和熟食网站:D’Artagnan
2018/11/13 全球购物
外科实习自我鉴定
2013/10/06 职场文书
大学生饮食配送创业计划书
2014/01/04 职场文书
《在大海中永生》教学反思
2014/02/24 职场文书
广告传媒专业应届生求职信
2014/03/01 职场文书
祖国在我心中演讲稿400字
2014/05/04 职场文书
党员干部反四风民主生活会对照检查材料思想汇报
2014/10/12 职场文书
违纪检讨书
2015/01/27 职场文书
幼师中班个人总结
2015/02/12 职场文书
离婚协议书范本(2016最新版)
2016/03/18 职场文书
公司年会主持词范文!
2019/05/07 职场文书
go结构体嵌套的切片数组操作
2021/04/28 Golang
python实现A*寻路算法
2021/06/13 Python
基于PostgreSQL/openGauss 的分布式数据库解决方案
2021/12/06 PostgreSQL
PyCharm 配置SSH和SFTP连接远程服务器
2022/05/11 Python