因此,我试图从openCV(python&windows 7)中的两个摄像头捕获。我从一个相机拍摄的很好,你也会注意到我在做一些有趣的事情,但这并不重要。这是尝试使用两个
import cv
import time
cv.NamedWindow("camera", 1)
cv.NamedWindow("camera2", 1)
capture = cv.CaptureFromCAM(0)
capture2 = cv.CaptureFromCAM(1)
while True:
img = cv.GetMat(cv.QueryFrame(capture))
img2 = cv.GetMat(cv.QueryFrame(capture2))
dst_image = cv.CloneMat(img)
dst_image2 = cv.CloneMat(img2)
cv.ConvertScale(img, dst_image, 255, -59745.0)
cv.ConvertScale(img2, dst_image2, 255, -59745.0)
cv.ShowImage("camera", dst_image)
cv.ShowImage("camera2", dst_image2)
if cv.WaitKey(10) == 27:
cv.DestroyWindow("camera")
cv.DestroyWindow("camera2")
break
很简单。但这不管用。在尝试从第二个摄像头(循环中的第二行代码)创建矩阵时,我被告知捕获为空。我使用的相机是罗技公司的,而且是同一型号的。
旁注:我也找不到用python连接的摄像头计数命令,所以如果有人能给我介绍一下,我会非常感激的。 --艾希礼
编辑: 如果知道windows经常提示我选择要使用的相机,这可能也很有用。我似乎无法避免这种行为。此外,我还下载了一些类似安全的软件,成功地同时运行了两个摄像头。它不是开源的或者类似的东西。很明显,这是可能的。
如果你使用windows进行编码,为什么不试试视频捕获模块呢。它非常容易使用,并给出一个PIL图像作为输出。以后可以将其更改为二维数组。
我对两个lifecam studio摄像头也有同样的问题。经过一点阅读,我认为这个问题与USB总线上的带宽过载有关。如果I 1.)降低分辨率(每台320 x 240)或2.)降低帧速率(800 x 600时约99毫秒),则两台摄像机都开始工作。附件是让我工作的代码:
下面是一个小代码:
im0和im1是PIL图像。现在可以使用scipy将其转换为数组,如下所示:
imarray0和imarray1是numpy 2D数组,可以进一步与openCV函数一起使用。
相关问题 更多 >
编程相关推荐