守则:
import cv2
cap= cv2.VideoCapture(1)
if not cap.isOpened():
raise IOError("Cannot open webcam")
cntr =0
while True:
ret,frame = cap.read()
cntr= cntr+1;
if ((cntr%30)==0):
cv2.putText(frame,'cool' ,(50,50), cv2.FONT_HERSHEY_SIMPLEX, 0.7,(0,0,255),2)
cv2.imshow('Text Detection Tutorial',frame)
if cv2.waitKey(2) & 0xff == ord('q'):
break
cap.release()
cv2.destroyAllWindows()jupyter-记事本窗口中的错误:
17引发IOError(“无法打开网络摄像头”)
OSError:无法打开摄像头
我有两个设备,一个内置的网络摄像头/dev/video0和一个USB摄像头/dev/video1.。
它们都与ls -ltrh /dev/video*一起出现
这两个摄像头与guvcview都能正常工作。
我使用jupyter笔记本来运行上面的代码。
当我使用cap= cv2.VideoCapture(0)时,它工作得很好。但是,当我使用cap= cv2。视频捕获(1)作为USB相机时,我会看到终端中的下一个错误:
/tmp/pip-req-build-ms668fyv/opencv/modules/videoio/src/cap_v4l.cpp警告:0全局
(893)打开VIDEOIO(V4L2:/dev/dev 1):不能按索引打开相机
我尝试将所有权限授予/dev/video1 1,sudo chmod 777 /dev/video1.
我用的是linux薄荷。
发布于 2021-04-13 05:09:35
Linux为每个摄像头在/dev/video中创建2个文件。较低编号的一个(在您的例子中是/dev/video0)用于捕获流,下面的一个(在您的例子中是/dev/video1)包含一些有关照相机的数据。
所以当您尝试使用索引号0时,它工作得很好,并使用VideoCapture(0)打开相机。但是第二部相机呢?可能有一些不同的原因导致了它的缺失:
。
因此,它不是因为VideoCapture而无法阅读,而是因为您试图用错误的索引打开它,这是相机的数据文件。
注意:我建议您也尝试VideoCapture(-1),这在某些情况下也很有趣。有时用于网络摄像机的子流或幸运地打开相机的子流,它有自己的驱动程序。
https://stackoverflow.com/questions/67065765
复制相似问题