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发送arp欺骗攻击代码分析
Jan 16 Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 Python
Python中xrange与yield的用法实例分析
Dec 26 Python
Python标准库笔记struct模块的使用
Feb 22 Python
python中的不可变数据类型与可变数据类型详解
Sep 16 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
Oct 11 Python
python变量赋值方法(可变与不可变)
Jan 12 Python
Ubuntu18.04下python版本完美切换的解决方法
Jun 14 Python
pytorch之inception_v3的实现案例
Jan 06 Python
Python为何不支持switch语句原理详解
Oct 21 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
Jan 21 Python
教你使用Python获取QQ音乐某个歌手的歌单
Apr 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令牌 Token改进版
2008/07/18 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
2013/08/01 PHP
Yii使用Captcha验证码的方法
2015/12/28 PHP
JQuery 选择器、过滤器介绍
2011/02/14 Javascript
jquery里的正则表达式说明
2011/08/03 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
2013/01/24 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
angularjs创建弹出框实现拖动效果
2020/08/25 Javascript
深入理解jQuery事件绑定
2016/06/02 Javascript
根据Bootstrap Paginator改写的js分页插件
2016/12/25 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
vuejs使用$emit和$on进行组件之间的传值的示例
2017/10/04 Javascript
VUE前端cookie简单操作
2017/10/17 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
JQuery Ajax动态加载Table数据的实例讲解
2018/08/09 jQuery
JavaScript this绑定过程深入详解
2018/12/07 Javascript
uniapp与webview之间的相互传值的实现
2020/06/29 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
[47:42]完美世界DOTA2联赛PWL S2 GXR vs Ink 第一场 11.19
2020/11/20 DOTA
python生成指定长度的随机数密码
2014/01/23 Python
python如果快速判断数字奇数偶数
2019/11/13 Python
基于pytorch的lstm参数使用详解
2020/01/14 Python
PyCharm汉化安装及永久激活详细教程(靠谱)
2020/01/16 Python
python实现堆排序的实例讲解
2020/02/21 Python
django rest framework使用django-filter用法
2020/07/15 Python
Python定时任务框架APScheduler原理及常用代码
2020/10/05 Python
FORZIERI澳大利亚站:全球顶级奢华配饰精品店
2016/12/31 全球购物
西班牙美妆电商:Perfume’s Club(有中文站)
2018/08/08 全球购物
销售经理工作失职检讨书
2014/10/24 职场文书
2015年人事科工作总结
2015/04/28 职场文书
幼儿园老师新年寄语
2015/08/17 职场文书
golang elasticsearch Client的使用详解
2021/05/05 Golang
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
MySQL学习之基础操作总结
2022/03/19 MySQL