【问题标题】:How to use OpenCV to capture live video feed from multiple cameras?如何使用 OpenCV 从多个摄像头捕获实时视频?
【发布时间】:2018-07-26 14:55:09
【问题描述】:

我在项目工作中使用 Opencv 3 和 python 3.6。我想一次设置多个摄像头,以便同时查看所有摄像头的视频。我想用它做面部识别。但是没有好的方法可以做到这一点。这是我关注的一个链接,但没有任何反应:Reading from two cameras in OpenCV at once

我也尝试过这篇博文,但它一次只能从视频中捕获一张图像,并且无法显示实时视频。 https://www.pyimagesearch.com/2016/01/18/multiple-cameras-with-the-raspberry-pi-and-opencv/

以前人们使用 C++ 完成此操作,但使用 python 对我来说似乎很难。

【问题讨论】:

  • 您能否一次读取每个摄像头的数据?
  • 是的,我是。从单个相机读取不是问题
  • 您似乎遵循正确的示例代码来实现这一目标。如果您将代码粘贴到此处,也许我们可以帮助调试它。
  • 你确定吗?好吧,我不会在代码中改变一点。我只是复制它来看看它是如何工作的
  • 在这里粘贴您的代码,如果您仍然遇到问题,也许我们可以帮助调试

标签: python opencv image-processing video-streaming video-capture


【解决方案1】:

以下代码有效并且我已经对其进行了测试,因此如果您使用两个摄像头,其中一个是网络摄像头,另一个是 USB 摄像头,(如果两者都是 USB 摄像头,请调整视频捕获数量)

import cv2


cap1 = cv2.VideoCapture(0)
cap2 = cv2.VideoCapture(1)

while 1:

  ret1, img1 = cap1.read()
  ret2, img2 = cap2.read()

  if ret1 and ret2:

      cv2.imshow('img1',img1)
      cv2.imshow('img2',img2)

      k = cv2.waitKey(100) 
      if k == 27: #press Esc to exit
         break

cap1.release()
cap2.release()
cv2.destroyAllWindows()

【讨论】:

  • 如果我们有超过 10 个网络摄像头会怎样。任何使用循环的解决方案?或任何预定义的方法或库??
  • 我不知道你将如何在一台电脑上添加 10 个网络摄像头,只需添加 cap3 = cv2.VideoCapture(3) 并继续添加 ..虽然我应该告诉你该程序运行速度非常慢更多你添加的网络摄像头
【解决方案2】:

一种解决方案是将每个摄像头放在它自己的 USB 控制器上。我使用 4 通道 PCIe 卡做到了这一点。该卡必须为每个端口配备一个单独的控制器。我刚刚完成一个项目,我从 4 个 ELP usb 相机拍摄图像,将图像组合成一个,然后将其写入磁盘。我花了几天时间试图让它发挥作用。我找到了两个与我的笔记本电脑摄像头和一个外置摄像头一起使用但不是两个外置摄像头的示例。内部摄像头与外部端口位于不同的 USB 控制器上...

【讨论】:

    【解决方案3】:

    我使用 R_Pi 和 2 个摄像头的经验表明,R_Pi 上的 GPU 存在局限性。 我使用 setup 将更多 GPU 内存分配给 512Mb。 使用 2 个摄像头时,速度会超过 10 fps。 此外,USB 端口限制了视频流。

    【讨论】:

      猜你喜欢
      • 2021-10-21
      • 2016-03-16
      • 1970-01-01
      • 2015-06-22
      • 2012-07-21
      • 1970-01-01
      • 1970-01-01
      • 2015-01-29
      • 1970-01-01
      相关资源
      最近更新 更多