相关疑难解决方法(0)

一次从OpenCV中的两个摄像头捕获视频

如何使用Python API一次(或几乎)使用OpenCV从两个或多个摄像头捕获视频?

我有三个网络摄像头,都具有视频流功能,位于/ dev/video0,/ dev/video1和/ dev/video2.

教程为例,从单个摄像头捕获图像就是:

import cv2
cap0 = cv2.VideoCapture(0)
ret0, frame0 = cap0.read()
cv2.imshow('frame', frame0)
cv2.waitKey()
Run Code Online (Sandbox Code Playgroud)

这很好用.

但是,如果我尝试初始化第二个摄像头,尝试read()从它返回None:

import cv2
cap0 = cv2.VideoCapture(0)
cap1 = cv2.VideoCapture(1)
ret0, frame0 = cap0.read()
assert ret0 # succeeds
ret1, frame1 = cap1.read()
assert ret1 # fails?!
Run Code Online (Sandbox Code Playgroud)

为了确保我不会意外地给OpenCV一个坏的相机索引,我单独测试了每个相机索引,它们都是自己工作的.例如

import cv2
#cap0 = cv2.VideoCapture(0)
cap1 = cv2.VideoCapture(1)
#ret0, frame0 = cap0.read()
#assert ret0
ret1, frame1 = cap1.read()
assert ret1 # now it works?!
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

编辑:我的硬件是运行Ubuntu的Macbook Pro.在Macbook上专门研究这个问题,我发现其他人也遇到过这个问题,无论是在OSX上还是在不同类型的摄像头上.如果我访问iSight,我的代码中的两个调用都会失败.

python camera opencv

18
推荐指数
5
解决办法
3万
查看次数

如何在Windows 10中创建虚拟网络摄像头?

我想从网络摄像头拍摄视频,在帧上渲染一些文本并进行一些运动跟踪并将其传递给虚拟网络摄像头,以便可以轻松地进行流式传输.

我在stackoverflow上找到了一些答案,表明我应该使用DirectShow.根据DirectShow文档中的信息,DirectShow SDK是Windows SDK的一部分.所以我安装了最新的Windows SDK,但似乎它不包括DirectShow,因为下面没有DirectShow示例C:\Program Files (x86)\Microsoft SDKs\Windows.(stackoverflow的答案也相当古老 - 大约在2010年左右)

您能否建议一种方法使DirectShow工作(包括在Visual Studio 2015上运行的示例)或DirectShow的其他替代方法,这将有助于我创建虚拟网络摄像头?

webcam winapi directshow video-capture windows-10

11
推荐指数
2
解决办法
2万
查看次数

列出可用的相机 OpenCV/Python

我的 PC 上连接了多个网络摄像头,我想根据其信息(名称、分辨率等)选择一台摄像头。有没有办法列出 PC 上可用的所有摄像机,而不是尝试 cv2.VideoCapture() 中的所有索引?

python opencv python-3.7 opencv4

7
推荐指数
2
解决办法
9316
查看次数

如何用Java创建一个新的相机源?

我正在尝试用 java 创建新的相机源或驱动程序。基于 python 有一个类似的问题。我想做的是,我希望在 Windows 中显示一个新的相机源,以便所有应用程序都可以连接到它。输出将是循环显示的许多图像,而不是实时摄像机。我可以用java实现这个吗?如果是的话怎么办?stackoverflow上有很多基于c++的问题。但不是关于 Java 的。我正在尝试用 Java 来实现这一点。我认为为此我需要使用像 directX 这样的东西。

我知道如何创建图像循环。但是如何创建相机源呢?

java camera driver virtual-webcam java-17

5
推荐指数
1
解决办法
818
查看次数