如何解决错误 (893) 无法通过索引、python 和 jupyter 笔记本打开相机
代码:
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,255),2)
cv2.imshow('Text Detection Tutorial',frame)
if cv2.waitKey(2) & 0xff == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
jupyter-notebook 窗口中的错误:
17 引发 IOError("无法打开网络摄像头")
操作系统错误:无法打开网络摄像头
我有两个设备,一个内置网络摄像头 /dev/video0
和一个 USB 网络摄像头 /dev/video1.
它们都以 ls -ltrh /dev/video*
两个摄像头都可以与 guvcview
配合使用。
我使用 jupyter-notebook 来运行上面的代码。
当我使用 cap= cv2.VideoCapture(0)
时它工作正常。但是当我为 USB 摄像头使用 cap= cv2.VideoCapture(1) 时,我在终端中收到下一个错误:
[ WARN:0] 全局 /tmp/pip-req-build-ms668fyv/opencv/modules/videoio/src/cap_v4l.cpp (893) open VIDEOIO(V4L2:/dev/video1): 无法通过索引打开摄像头
我尝试将所有权限授予 /dev/video1,sudo chmod 777 /dev/video1.
我使用的是 linux mint。
解决方法
Linux 在 /dev/video
中为每个网络摄像头创建 2 个文件。较低的编号(在您的情况下为 /dev/video0
)用于捕获流,下一个(在您的情况下为 /dev/video1
)包含有关相机的一些数据。
因此,当您尝试使用索引号 0 时,它工作正常并使用 VideoCapture(0)
打开相机。但是第二个摄像头呢?可能有一些不同的原因导致它丢失:
- 当前的驱动系统不支持(不是 video4linux 设备或旧内核版本)
- 它不是插入 USB 的相机。
结果不是因为VideoCapture
不能读;只是因为你试图用错误的索引打开它,这是相机的数据文件。
注意:我建议您也尝试 VideoCapture(-1)
,这在某些情况下也很有趣。有时用于网络摄像头的子流或幸运地打开具有自己的驱动程序的摄像头子流。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。