Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从两个摄像头(OpenCV、Python)捕获_Python_Opencv_Camera - Fatal编程技术网

从两个摄像头(OpenCV、Python)捕获

从两个摄像头(OpenCV、Python)捕获,python,opencv,camera,Python,Opencv,Camera,因此,我试图在openCV(python和windows7)中通过两个摄像头进行拍摄。我用一台相机拍的很好,你也会注意到我对图像做了一些古怪的事情,但这并不重要。这是尝试使用两种方法的代码 import cv import time cv.NamedWindow("camera", 1) cv.NamedWindow("camera2", 1) capture = cv.CaptureFromCAM(0) capture2 = cv.CaptureFromCAM(1) while True:

因此,我试图在openCV(python和windows7)中通过两个摄像头进行拍摄。我用一台相机拍的很好,你也会注意到我对图像做了一些古怪的事情,但这并不重要。这是尝试使用两种方法的代码

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图像作为输出。您可以稍后将其更改为二维阵列。

以下是一个小代码:

import VideoCapture
cam0 = VideoCapture.Device(0)
cam1 = VideoCapture.Device(1)
im0 = cam0.getImage()
im1 = cam1.getImage()
im0和im1是PIL图像。现在可以使用scipy将其转换为数组,如下所示:

import scipy as sp
imarray0 = asarray(im0)
imarray1 = asarray(im1)

imarray0和imarray1是numpy 2D阵列,您可以进一步使用openCV函数。

我在使用两个lifecam studio网络摄像头时遇到了相同的问题。经过一点阅读,我认为这个问题与USB总线上的带宽过载有关。如果1.)降低分辨率(每个320 x 240)或2.)降低帧速率(~99毫秒@800 x 600),两个摄像头都开始工作。附件是使我工作的代码:

import cv

cv.NamedWindow("Camera 1")
cv.NamedWindow("Camera 2")
video1 = cv.CaptureFromCAM(0)
cv.SetCaptureProperty(video1, cv.CV_CAP_PROP_FRAME_WIDTH, 800)
cv.SetCaptureProperty(video1, cv.CV_CAP_PROP_FRAME_HEIGHT, 600)

video2 = cv.CaptureFromCAM(1)
cv.SetCaptureProperty(video2, cv.CV_CAP_PROP_FRAME_WIDTH, 800)
cv.SetCaptureProperty(video2, cv.CV_CAP_PROP_FRAME_HEIGHT, 600)

loop = True
while(loop == True):
    frame1 = cv.QueryFrame(video1)
    frame2 = cv.QueryFrame(video2)
    cv.ShowImage("Camera 1", frame1)
    cv.ShowImage("Camera 2", frame2)
    char = cv.WaitKey(99)
    if (char == 27):
        loop = False

cv.DestroyWindow("Camera 1")
cv.DestroyWindow("Camera 2")

签名已删除,请参阅常见问题解答。我有很多原因,特别是在将来,我需要我更喜欢使用openCV。但是谢谢,好吧,现在就走投无路。设置视频捕获并保存一个摄像头的图像,但我对如何执行第二步有点困惑。你能给我举个例子吗?这让我更容易诊断问题。原来是罗技的司机不让两个摄像头同时与电脑通话。第一台摄像机拍得很好。第二个摄像头尝试连接时,指示灯闪烁,但从未成功。再次感谢你,我想我现在会试试两个不同的相机,然后看看我是否可以换一个品牌,做两个相同的。你能解决这个问题真是太棒了。另外,如果你知道如何列举所有可能连接到计算机的网络摄像头,请告诉我