【杂记】同时调用多个摄像头

最近做研究需要采集数据,需求是这样的:
制作一个可以移动的设备(暂且叫做设备吧),对同一个物体同时从10个角度进行拍摄
难点是这样的:
准备使用比较成熟的HIKVION的USB摄像头进行拍摄,但是树莓派、Jeston板这些usb接口都是十分有限的,所以就需要用到USB Hub。但是USB Hub不能够同时打开两个摄像头。可能的原因是由于单个USB最大传输是70MB,两个(及其以上)的摄像头会超过这个带宽(原因依据)。


再次列出解决方法及其存在的缺陷,如有其他方法我也会在这个博文上进行总结和更新。


目前的解决方法1:

写一个轮续,打开一个关掉后在打开另一个。
缺点:关掉前一个程序(.release函数)所用的时间太长(大概一秒钟)
代码

# -*- coding=GBK -*-
import cv2 as cv
import time
import cv2 # 有的时候习惯写CV,有时习惯CV2都是一样的
# 打开摄像头获取图片
def video_demo():
    capture_1 = cv.VideoCapture(0)  # 打开摄像头,0代表的是设备id,如果有多个摄像头,可以设置其他数值
    capture_2 = cv.VideoCapture(1)  # 打开摄像头,0代表的是设备id,如果有多个摄像头,可以设置其他数值

    ret_1, frame_1 = capture_1.read()  # 读取摄像头,它能返回两个参数,第一个参数是bool型的ret,其值为True或False,代表有没有读到图片;第二个参数是frame,是当前截取一帧的图片
    frame_1 = cv.flip(frame_1, 1) # flip():图像翻转函数   第二个参数 小于0: 180°旋转,等于0: 上下颠倒,大于0: 水平颠倒(镜像图)
    cv.imshow("video_1", frame_1)

    cv2.imwrite("test1.png", frame_1)
    capture_1.release()
    strat1 = time.time()

    # time.sleep(0.5)
    ret_2, frame_2 = capture_2.read()  # 读取摄像头,它能返回两个参数,第一个参数是bool型的ret,其值为True或False,代表有没有读到图片;第二个参数是frame,是当前截取一帧的图片
    frame_2 = cv.flip(frame_2, 1)  # flip():图像翻转函数   第二个参数 小于0: 180°旋转,等于0: 上下颠倒,大于0: 水平颠倒(镜像图)
    cv.imshow("video_2", frame_2)

    cv2.imwrite("test2.png", frame_2)# 详见备注
    capture_2.release()
    strat2 = time.time()
    print(strat2 - strat1)

video_demo()
cv.destroyAllWindows()

结果在这里插入图片描述

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
引用\[1\]:树莓派、Jeston板这些usb接口都是十分有限的,所以就需要用到USB Hub。但是USB Hub不能够同时打开两个摄像头。可能的原因是由于单个USB最大传输是70MB,两个(及其以上)的摄像头会超过这个带宽。引用\[2\]:在树莓派上使用多个USB摄像头时,可以通过查看USB摄像头的ID来确定各个摄像头所对应的id。树莓派在通电的时候,哪一个摄像头先通电的,哪一个就是0,下一个就是1,2,3,4,5。但这样毕竟很被动,在代码上就很麻烦了。引用\[3\]:可以通过指定摄像头的设备路径来精确打开某个摄像头,例如使用cap = cv2.VideoCapture("/dev/people_video")来打开人体识别摄像头。总结起来,树莓派同时使用两个USB摄像头时,可以通过查看摄像头的ID或指定摄像头的设备路径来确定各个摄像头的顺序和使用。 #### 引用[.reference_title] - *1* [【杂记】同时调用多个摄像头](https://blog.csdn.net/vibration_xu/article/details/126533219)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [树莓派接多个USB摄像头,使用opencv打开指定的某一个摄像头](https://blog.csdn.net/weixin_43808708/article/details/108828937)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一位不愿透漏姓氏的许先森

你的鼓励是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值