Python通过cv2读取多个USB摄像头

本文实例为大家分享了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)

open 函数确实只接收索引参数,并没有其它的同名实现。如果想要通过类似硬件 id 来唯一确定参数,需要单独实现这样的方法。

但通过分析源码发现,getAvailableBackends_CaptureByIndex() 中间有调用到这样的方法,于是大胆猜测摄像头信息应该按照 USB 接入顺序保存在一个数据结构中,因此可以假定按设备插入的先后顺序来判定使用哪个摄像头。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 树莓派用python中的OpenCV输出USB摄像头画面

    本文实例为大家分享了python OpenCV来表示USB摄像头画面的具体代码,供大家参考,具体内容如下 确认Python版本 $ python Python 2.7.13 (default, Jan 19 2019, 14:48:08) [GCC 6.3.0 20170124] on linux2 Type "help", "copyright", "credits" or "license" for more inform

  • Python通过cv2读取多个USB摄像头

    本文实例为大家分享了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.

  • python cv2读取rtsp实时码流按时生成连续视频文件方式

    我就废话不多说了,直接上代码吧! # coding: utf-8 import datetime import cv2 import os ip = '192.168.3.160'.replace(".", "_") rtsp = 'rtsp://admin:admin@192.168.3.160:554/1/1' # 初始化摄像头 cap = cv2.VideoCapture(rtsp) fourcc = cv2.VideoWriter_fourcc(*'XVID

  • Python利用VideoCapture读取视频或摄像头并进行保存

    目录 一.语法:cap = cv2.VideoCapture(0) 二.语法:cap.isOpened() 三.语法:ret,frame = cap.read() 四.语法:key = cv2.waitKey(1) 五.读取摄像头并保存为视频代码演示 六.读取视频并按帧进行保存代码演示: 一.语法:cap = cv2.VideoCapture(0) 说明:参数0表示默认为笔记本的内置第一个摄像头,如果需要读取已有的视频则参数改为视频所在路径路径,例如:cap=cv2.VideoCapture('

  • python 3利用Dlib 19.7实现摄像头人脸检测特征点标定

    Python 3 利用 Dlib 19.7 实现摄像头人脸检测特征点标定 0.引言 利用python开发,借助Dlib库捕获摄像头中的人脸,进行实时特征点标定: 图1 工程效果示例(gif) 图2 工程效果示例(静态图片) (实现比较简单,代码量也比较少,适合入门或者兴趣学习.) 1.开发环境 python: 3.6.3 dlib: 19.7 OpenCv, numpy import dlib # 人脸识别的库dlib import numpy as np # 数据处理的库numpy impor

  • python使用opencv在Windows下调用摄像头实现解析

    这篇文章主要介绍了python使用opencv在Windows下调用摄像头实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 环境准备 1.我这里使用的是python3.7.4 2.使用pip安装numpy与opencv-python模块 安装成功后会提升succeed,这里我已安装所以提示已存在.需要注意的是opencv-python目前只有python3.7的支持版本不支持最新的python3.8. 可在阿里云的镜像仓库内查看openc

  • python使用opencv读取图片的实例

    安装好环境后,开始了第一个Hello word 例子,如何读取图片,保存图品 import cv2 import numpy as np import matplotlib.pyplot as plt #读取图片代码 img = cv2.imread('test.jpg',cv2.IMREAD_GRAYSCALE) #IMREAD_COLOR = 1 #IMREAD_UNCHANGED = -1 #展示图片 cv2.imshow('image',img) cv2.waitKey(0) cv2.d

  • python或C++读取指定文件夹下的所有图片

    本文实例为大家分享了python或C++读取指定文件夹下的所有图片,供大家参考,具体内容如下 1.python读取指定文件夹下的所有图片路径和图片文件名 import cv2 from os import walk,path def get_fileNames(rootdir): data=[] prefix = [] for root, dirs, files in walk(rootdir, topdown=True): for name in files: pre, ending = pa

  • OpenCV外接USB摄像头的方法

    近期,需要利用OpenCV计算机视觉库读取视频并显示.保存.由于之前一直使用笔记本,此次台式机外接USB摄像头,出现了很大问题,总是显示内存问题,谷歌.百度大半天,总结各路大神建议,最终解决了问题,将问题和代码分享给大家,避免走弯路. 出现问题原因: 1. 摄像头初始化需要时间,进入循环前 waitKey(2000),否则会出现闪退:         2. 摄像头视频存在解码问题. //--------------------------------------[程序说明]-----------

  • python之cv2与图像的载入、显示和保存实例

    本文是OpenCV 2 Computer Vision Application Programming Cookbook读书笔记的第一篇.在笔记中将以Python语言改写每章的代码. PythonOpenCV的配置这里就不介绍了. 注意,现在OpenCV for Python就是通过NumPy进行绑定的.所以在使用时必须掌握一些NumPy的相关知识! 图像就是一个矩阵,在OpenCV for Python中,图像就是NumPy中的数组! 如果读取图像首先要导入OpenCV包,方法为: impor

随机推荐