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迭代用法实例教程
Sep 08 Python
Python 3.x 新特性及10大变化
Jun 12 Python
详解Django中Request对象的相关用法
Jul 17 Python
python基础while循环及if判断的实例讲解
Aug 25 Python
使用DataFrame删除行和列的实例讲解
Apr 08 Python
详解Python if-elif-else知识点
Jun 11 Python
python对list中的每个元素进行某种操作的方法
Jun 29 Python
pandas 透视表中文字段排序方法
Nov 16 Python
python 获取页面表格数据存放到csv中的方法
Dec 26 Python
python 画三维图像 曲面图和散点图的示例
Dec 29 Python
Python数据分析库pandas高级接口dt的使用详解
Dec 11 Python
python实现图片转字符画的完整代码
Feb 21 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中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
php $_SERVER windows系统与linux系统下的区别说明
2014/02/14 PHP
PHP+Apache实现二级域名之间共享cookie的方法
2019/07/24 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
2017/02/17 Javascript
微信小程序 后台登录(非微信账号)实例详解
2017/03/31 Javascript
Javascript实现base64的加密解密方法示例
2017/06/27 Javascript
基于jQuery解决ios10以上版本缩放问题
2017/11/03 jQuery
jquery+php后台实现省市区联动功能示例
2019/05/23 jQuery
关于vue项目中搜索节流的实现代码
2019/09/17 Javascript
JS设置自定义快捷键并实现图片上下左右移动
2019/10/17 Javascript
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解
2020/02/06 NodeJs
js实现飞机大战小游戏
2020/08/26 Javascript
Nest.js散列与加密实例详解
2021/02/24 Javascript
[05:08]顺网杯ISS-DOTA2赛歌 少女偶像Lunar青春演绎
2013/12/05 DOTA
[02:04]2020年夜魇暗潮预告片
2020/10/30 DOTA
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
PyQt5重写QComboBox的鼠标点击事件方法
2019/06/25 Python
python flask搭建web应用教程
2019/11/19 Python
python 监测内存和cpu的使用率实例
2019/11/28 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
Python实现AES加密,解密的两种方法
2020/10/03 Python
Pytorch实验常用代码段汇总
2020/11/19 Python
大韩航空官方网站:Korean Air
2017/10/25 全球购物
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
opencv实现图像几何变换
2021/03/24 Python
金融系毕业生自荐书
2014/07/08 职场文书
英语课前三分钟演讲稿(6篇)
2014/09/13 职场文书
维稳工作情况汇报
2014/10/27 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
js 数组 fill() 填充方法
2021/11/02 Javascript
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers