2012-12-28 99 views
0

我在hp touchsmart 600上运行windows 7 64位(32位python)。前一段时间我卸载然后重新安装opencv 2.4.3。在卸载和重新安装之间,我卸载了一些我认为没有使用的程序。现在,opencv只有在opencv能够正确访问我的网络摄像头之前才会显示黑屏。但是,如果我使用相机2(即cam = create_capture(2,...)),opencv能够正确使用我的网络摄像头。为什么相机0突然停止工作?它以某种方式成为相机2还是可以卸载opencv访问我的摄像头所需的依赖项?此外,使用相机1和3也适用,即使我只有一个网络摄像头。opencv - 相机0不工作

+0

如果您只有一个相机,只需传递值-1(非零)即可。为什么相机0停止工作,我只能猜测,在Windows下不能保证第一个凸轮被分配为0.但我建议移动到更新的OpenCV API。在这个新版本中,您可以使用'VideoCapture'而不是'CaptureFromCam',现在您指定0(在旧版API中的操作与-1相同)。 – mmgp

+0

你能否解释一下你的意思是新的opencv api?是不是最新的opencv 2.4.3? – bab

+3

OpenCV 2.4.3是最新发布版本。在它里面,python绑定有两个API,旧的'cv'和新的'cv2'。检查此:http://stackoverflow.com/questions/10417108/what-is-different-between-all-these-opencv-python-interfaces/10425504#10425504 –

回答

0

摄像机0指向您的默认摄像头驱动程序,摄像头1指向次驾驶员,摄像头2指向第三驾驶员,等等。

这意味着即使使用单个相机硬件,也可以有多个可以访问它的驱动程序。

我们假设您的主要相机驱动程序(可能由HP提供)在卸载过程中损坏。这意味着当你调用摄像头0时,你正在实例化HP驱动程序(现在已损坏),这会给你一个黑屏。

但是,由于您的相机硬件不受影响,您的二级和三级相机驱动程序也不受影响,所以当您访问相机1时,您的二级相机驱动程序会正确流动实时进纸。

如果您没有三级相机驱动程序,相机2将指向次级驱动程序。因此,如果没有驱动程序与相机2关联,则相机2将调用与相机1相对应的驱动程序。