如何让USB摄像头与OpenCV配合使用?

12

我从https://dev59.com/ClsW5IYBdhLWcg3wyJt3#34588758复制了代码并使用默认(内置)相机,它正常工作。然后我连接了USB相机,在VLC上进行测试,并更改了代码以打开相机1

cam = cv2.VideoCapture(1)

我检查了相机是否打开cam.isOpened() - 确认已经打开 - 但是相机没有启用(硬件指示灯未亮),屏幕上只显示黑色画面。

是否需要添加其他特殊代码以启用USB相机?


2
你确定USB相机是相机1吗?我以前遇到过这种情况,不得不使用cv2.VideoCapture(0)。 - Stanley
1
@Stanley,非常感谢! :-) 我花了很多时间也无法猜测在连接USB相机后数字是如何洗牌的。你能否将您的评论发布为常规答案? - greenoldman
1
谢谢,作为一个自学的程序员能够帮助有经验的程序员,这几乎是一种“荣誉”!这表明每个人都可以从任何人身上学到东西。再次感谢! :) - Stanley
7个回答

13

你可以参考这个链接:

https://devtalk.nvidia.com/default/topic/1027250/how-to-use-usb-webcam-in-jetson-tx2-with-python-and-opencv-/

这里他将下面的行更改为:

cap = cv2.VideoCapture("/dev/video1") # check this

插入相机之前,请前往终端主目录。

  1. 输入cd /dev
  2. 输入ls video,然后按下 Tab 键,如果只有一个结果 video0,这意味着只有网络摄像头可用。
  3. 现在再次插入 USB 摄像头并重复 1 到 2 步骤。当您重复这些步骤时,应该会找到 video1video2

上面的帖子特别指出这是针对Windows的(通过标签)。路径“/dev/video1”是Linux设备路径。在Windows上不存在同样的方式。 - Code Doggo

6

你确定USB相机是相机1吗?我以前遇到过这种情况,需要使用cv2.VideoCapture(0)。


6

我遇到了相同的问题,结果发现有时网络摄像头可以占用0号和1号插槽。所以对我来说cam = cv2.VideoCapture(2)有效。这是使用上面提到的cd /dev方法发现的。


2

我不知道为什么,但在我的笔记本电脑(宏碁 Aspire 3)上,USB 摄像头只有在插入右侧 USB 端口时才能与 Python OpenCV 兼容,并且如果我将其插入左侧 USB 端口,则无法使用。因此,请尝试将摄像头插入您拥有的所有 USB 端口。(我还必须像 @Slayahh 建议的那样使用 cam = cv2.VideoCapture(2)。)


1

0
在我的情况下,LED指示灯亮了,但没有返回任何读取结果。不知何故,解决办法是再次调用cv2.VideoCapture。
cap = cv2.VideoCapture(1)
_ = cv2.VideoCapture(1)

-1
当你使用USB摄像头作为视频捕获时,只需尝试cv2.VideoCapture(0),这对我来说可以使用外部摄像头。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接