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计算三维矢量幅度的方法
Jun 15 Python
在Django的form中使用CSS进行设计的方法
Jul 18 Python
Python语法快速入门指南
Oct 12 Python
Django Admin实现上传图片校验功能
Mar 06 Python
Python的for和break循环结构中使用else语句的技巧
May 24 Python
python实现顺时针打印矩阵
Mar 02 Python
python 实现二维字典的键值合并等函数
Dec 06 Python
使用pyshp包进行shapefile文件修改的例子
Dec 06 Python
Pycharm 2020年最新激活码(亲测有效)
Sep 18 Python
pycharm设置当前工作目录的操作(working directory)
Feb 14 Python
python如何提取英语pdf内容并翻译
Mar 03 Python
浅谈keras使用中val_acc和acc值不同步的思考
Jun 18 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自动更新版权信息显示的方法
2015/06/19 PHP
关于php中的json_encode()和json_decode()函数的一些说明
2016/11/20 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
大家未必知道的Js技巧收藏
2008/04/07 Javascript
封装的原生javascript弹出层代码
2010/09/24 Javascript
javascript元素动态创建实现方法
2015/05/13 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
理解javascript中Map代替循环
2016/02/26 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
jQuery简单设置文本框回车事件的方法
2016/08/01 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
纯原生js实现table表格的增删
2017/01/05 Javascript
JavaScript比较两个数组的内容是否相同(推荐)
2017/05/02 Javascript
js实现股票实时刷新数据案例
2017/05/14 Javascript
Three.js如何实现雾化效果示例代码
2017/09/27 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
基于vue2.x的电商图片放大镜插件的使用
2018/01/22 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
2020/08/03 Javascript
JS实现简单贪吃蛇小游戏
2020/10/28 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
python re正则表达式模块(Regular Expression)
2014/07/16 Python
30秒轻松实现TensorFlow物体检测
2018/03/14 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
python如果快速判断数字奇数偶数
2019/11/13 Python
Python语法垃圾回收机制原理解析
2020/03/25 Python
python热力图实现简单方法
2021/01/29 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
纯CSS和jQuery实现的在页面顶部显示的进度条效果2例(仿手机浏览器进度条效果)
2014/04/16 HTML / CSS
董事长年会致辞
2015/07/29 职场文书
2016大学生形势与政策心得体会
2016/01/12 职场文书
导游词之山海关
2019/12/10 职场文书
mysql 乱码 字符集latin1转UTF8
2022/04/19 MySQL
Android 界面一键变灰 深色主题工具类
2022/04/28 Java/Android