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 多进程通信模块的简单实现
Feb 20 Python
纯python实现机器学习之kNN算法示例
Mar 01 Python
python中多层嵌套列表的拆分方法
Jul 02 Python
python获取url的返回信息方法
Dec 17 Python
如何通过python的fabric包完成代码上传部署
Jul 29 Python
使用Tensorboard工具查看Loss损失率
Feb 15 Python
Keras Convolution1D与Convolution2D区别说明
May 22 Python
Python Selenium模块安装使用教程详解
Jul 09 Python
如何基于Django实现上下文章跳转
Sep 16 Python
OpenCV利用python来实现图像的直方图均衡化
Oct 21 Python
详解Python Celery和RabbitMQ实战教程
Jan 20 Python
Python实现仓库管理系统
May 30 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
当年上海收录机产品生产,进口和价格情况
2021/03/04 无线电
PHP对表单提交特殊字符的过滤和处理方法汇总
2014/02/18 PHP
PHP ajax 异步执行不等待执行结果的处理方法
2015/05/27 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
PHP实现生成模糊图片的方法示例
2017/12/21 PHP
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
javascript如何实现360度全景照片问题汇总
2016/04/04 Javascript
jquery树形菜单效果的简单实例
2016/06/06 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
DropDownList控件绑定数据源的三种方法
2016/12/24 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
Vue非父子组件通信详解
2017/06/12 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
react-native动态切换tab组件的方法
2018/07/07 Javascript
three.js搭建室内场景教程
2018/12/30 Javascript
Vue中的transition封装组件的实现方法
2019/08/13 Javascript
关于layui的下拉搜索框异步加载数据的解决方法
2019/09/28 Javascript
python多线程http下载实现示例
2013/12/30 Python
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
python编程开发之日期操作实例分析
2015/11/13 Python
python操作excel文件并输出txt文件的实例
2018/07/10 Python
使用python的turtle函数绘制一个滑稽表情
2020/02/28 Python
Python 实现将numpy中的nan和inf,nan替换成对应的均值
2020/06/08 Python
keras训练浅层卷积网络并保存和加载模型实例
2020/07/02 Python
python+flask编写一个简单的登录接口
2020/11/13 Python
CSS实现雨滴动画效果的实例代码
2019/10/08 HTML / CSS
Gucci法国官方网站:意大利奢侈品牌
2018/07/25 全球购物
几个判断型的面试题
2012/07/03 面试题
工作自我评价怎么写
2014/01/29 职场文书
小学生读书感言
2014/02/12 职场文书
2014世界杯球队球队口号
2014/06/05 职场文书
企业文化标语口号
2014/06/09 职场文书
实习生工作证明范本
2014/09/14 职场文书
IDEA 2022 Translation 未知错误 翻译文档失败
2022/04/24 Java/Android