当前位置: 首页 > 知识库问答 >
问题:

OpenCV无法从Linux上的8个以上网络摄像头中捕获

拓拔浩阔
2023-03-14

OpenCV无法在Linux上打开超过8个网络摄像头的视频捕获。这里有一个简单的例子:

# "opencap.py"
import cv2, sys
dev = int(sys.argv[1])
cap = cv2.VideoCapture(dev)
print "device %d: %s" %(dev, "success" if cap.isOpened() else "failure")

对于我的设置(OpenCV 2.4.11,Ubuntu 14.04),比如说,有9个网络摄像头,opencap。py在前8个摄像头(0-7个)中成功,但在最后一个摄像头中成功

> python opencap.py 8
HIGHGUI ERROR: V4L: index 8 is not correct!
device 8: failure

注意:v4l2-ctl——列出设备正确列出了9个网络摄像头(/dev/video0、/dev/video8)。

共有1个答案

令狐宏浚
2023-03-14

问题是由OpenCV源代码中的这一行引起的:

#define MAX_CAMERAS 8

只需更改MAX\u CAMERAS值并重建OpenCV即可解决问题。要更改的文件是modules/highgui/src/cap_libv4l。libv4l构建的cpp(第260行)和cap_v4l。v4l构建的cpp。(有关两个构建选项的更多信息,请参见此答案。)对于OpenCV 3.0,目录更改为modules/videoio/src/。

注意:通常在达到8摄像头限制之前,网络摄像头会遇到USB带宽问题。例如,见本答案。

 类似资料:
  • 问题内容: 如何连续从摄像头捕获图像? 我想尝试对象识别(也许使用Java Media Framework)。 我当时正在考虑创建两个线程 一个线程: 节点1:捕获实时图像 节点2:将图片另存为“ 1.jpg” 节点3:等待5秒 节点4:重复… 其他线程: 节点1:等到捕获图像 节点2:使用“ 1.jpg”获取每个像素的颜色 节点3:将数据保存在数组中 节点4:重复… 问题答案: 此JavaCV实

  • 我试图使用官方openCV教程中的代码,在Ubuntu/Python 3.6中使用显示网络摄像头的视频: 对于: 功能未实现。使用Windows、GTK 2. x或Carbon支持重建库。如果你在Ubuntu或Debian上,安装libgtk2.0-dev和pkg-config,然后在cvShowImage函数中重新运行cmake或配置脚本 在搜索错误时,我偶然发现了这篇文章,作为类似问题的替代答

  • 问题内容: 我想从网络摄像头捕获单个图像并将其保存到磁盘。我想用Java或Python(最好是Java)做到这一点。我想要在64位Win7和32位Linux上都可以使用的东西。 编辑:我使用Python 3.x,而不是2.x 因为在其他地方我都看到这个问题,使人们设法感到困惑,所以我将明确说明一些事情: 我不想使用处理 除上述语言外,我不想使用任何其他语言 我确实想以任何方式,形状或形式在屏幕上显

  • 我目前正在做一个项目,从网络摄像头捕捉视频,并通过UDP发送编码流来做实时流。 有人说从cap.read得到的帧已经是解码帧,我不知道这是如何以及何时发生的。我想要的是编码的帧或流。我应该怎么做才能得到它?我应该再编码一次吗?

  • 我正在开发一个简单的博客应用程序,允许用户将照片从手机图库和描述上传到Firebase服务器。我正在尝试修改我的当前项目,以允许用户从照相机捕获照片并将其上载到firebase服务器。 目前,我能够将我捕获的图像显示到Image按钮中,但是我无法将我的图像发布到Firebase服务器(提交发布按钮不会对我的点击功能做出反应)。 我怀疑我的startPosting()函数中有错误,或者我没有正确编码

  • 我正在开发一个web应用程序,它可以浏览和拍摄本地照片,我还想通过相机拍摄图像。我使用下面的代码,我可以捕捉设备摄像头。 现在,我想获得图像和onchangeevent,转换为base64,并希望在该页面中显示。 好心帮我伙计们!