用python打开多个摄像头_了解使用python和OpenCV与VideoCaptu进行多个网络摄像头捕获...

我正在尝试同时(或几乎同时)从多个网络摄像头捕捉图像。我一直在玩OpenCV、VideoCapture和python编程。但有些困惑,希望有人能帮忙解释。。。

首先,我尝试了视频捕捉(Markus Gritsch的工作在这里找到:http://videocapture.sourceforge.net/)。

这是一个非常易于使用的python插件。如果我只是想捕捉一个简单的图像。它工作得很好。。。在很大程度上。

我的设置是两个便宜的摄像头在一个USB接口上的USB集线器和我的笔记本电脑的内置摄像头。

我读过所有关于在同一个USB总线上使用同一型号的摄像头,以及它可能无法工作的内容,等等,但我决定尝试一下。(我也有一些照片亭的程序,我一定已经安装了很久以前称为“Cyberlink YouCam”出于某种原因,这个程序“看起来”像是一个摄像头,对OpenCV和视频捕捉。

视频捕获连接到每个摄像头并从中捕获,如下所示:Cam0 = Device(devnum=0)

Cam0.saveSnapshot("filename0.jpg")

del Cam0

Cam1 = Device(devnum=1)

Cam1.saveSnapshot("filename1.jpg")

del Cam1

有了视频捕捉和我描述的设置,我可以独立地从我的系统上的所有相机(共4个,包括YouCam。。。0至3)

问题是这个程序似乎不能同时连接到多个摄像机。。。如果我不关闭前一个摄像头实例,它就会冻结,我必须断开并重新连接第一个摄像头与USB的连接,才能重新访问它。

这行不通:cam0 = Device(devnum=0)

cam1 = Device(devnum=1)

cam0.saveSnapshot("filename0.jpg")

cam1.saveSnapshot("filename1.jpg")

del cam0

del cam1

Cam0将打开,但这是它的结束。冻僵了。

另一件事是,在cheapo摄像头上,有一个很大的延迟(几乎一秒钟)直到图片变得生动。。。为了成功抓捕,我不得不这样做:Cam1 = Device(devnum=1)

Cam1.saveSnapshot("filename1.jpg") #gets the camera going and saves black image

time.sleep(.75) #delay

Cam1.saveSnapshot("filename1.jpg") #captures the image second time around

有效地保存图像两次。。。

如果每台相机的图像在静默中相隔几毫秒,我是不会介意的#open connection to cam, take image

#close connection to cam

#connect to next cam, take next image

#close connection to cam

#etc.

但是耽搁太久了。。。我以为是因为网络摄像头太便宜了,但我看到了另一个结果,因为简历是公开的,所以一定是视频捕获的错。

首先,我可以用OpenCV同时打开多个相机。。。但只有不同类型的。(其中一个cheapo摄像头和我的内置摄像头。。。和/或Cyberlink程序)OpenCV似乎看到两个cheapo摄像头和一个摄像头在同一个USB集线器上(它只打开其中一个摄像头)capture0 = CaptureFromCAM(0) #this was Cyberlink Program

capture1 = CaptureFromCAM(1) #this was cheapo cam

capture2 = CaptureFromCAM(2) #this was built-in cam

#CaptureFromCAM(3) resulted in error... did not find a 4th "camera"

frame0 = QueryFrame(capure0)

frame1 = QueryFrame(capure1)

frame2 = QueryFrame(capure2)

cv.SaveImage("filename0.jpg",frame0)

cv.SaveImage("filename1.jpg",frame1)

cv.SaveImage("filename2.jpg",frame2)

然而,视频捕捉可以看到两个类似的相机独立,OpenCV不能。

有人知道为什么吗?两个软件包与计算机的交互方式有什么不同,一个可以在同一个USB上确定不同的摄像头,另一个不能?

其次,OpenCV立刻打开了我的廉价相机。。。不,在那里耽搁了75秒。

同样,我很好奇这两个软件包(视频捕捉和OpenCV)与摄像头之间的通信方式有什么不同?

我最终感兴趣的是能够同时从2或3个摄像机上拍摄(或者接近它,如果有几毫秒的延迟,那就可以了)。看起来OpenCV是一个不错的选择,但是,我试图更好地理解软件是如何与摄像头交互的。

谢谢大家的洞察力!

J型

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值