首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误(893)不能通过索引、python和jupyter笔记本打开相机

错误(893)不能通过索引、python和jupyter笔记本打开相机
EN

Stack Overflow用户
提问于 2021-04-12 21:14:09
回答 1查看 1.8K关注 0票数 2

守则:

代码语言:javascript
复制
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薄荷。

EN

回答 1

Stack Overflow用户

发布于 2021-04-13 05:09:35

Linux为每个摄像头在/dev/video中创建2个文件。较低编号的一个(在您的例子中是/dev/video0)用于捕获流,下面的一个(在您的例子中是/dev/video1)包含一些有关照相机的数据。

所以当您尝试使用索引号0时,它工作得很好,并使用VideoCapture(0)打开相机。但是第二部相机呢?可能有一些不同的原因导致了它的缺失:

  • 当前驱动程序系统不支持(不是video4linux设备或旧内核版本)
  • ,而不是usb插入式摄像头。

因此,它不是因为VideoCapture而无法阅读,而是因为您试图用错误的索引打开它,这是相机的数据文件。

注意:我建议您也尝试VideoCapture(-1),这在某些情况下也很有趣。有时用于网络摄像机的子流或幸运地打开相机的子流,它有自己的驱动程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67065765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档