【问题标题】:Error (893) can't open camera by index, python and jupyter notebook错误 (893) 无法通过索引、python 和 jupyter notebook 打开相机
【发布时间】:2021-07-07 23:16:49
【问题描述】:

代码:

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-notebook窗口报错:

17 引发 IOError("无法打开网络摄像头")

OSError:无法打开网络摄像头

我有两个设备,一个内置网络摄像头 /dev/video0 和一个 USB 网络摄像头 /dev/video1.

它们都显示为ls -ltrh /dev/video*

两个摄像头都可以正常使用guvcview

我使用 jupyter-notebook 来运行上面的代码。

当我使用cap= cv2.VideoCapture(0) 时,它工作正常。但是当我对 USB 摄像头使用 cap= cv2.VideoCapture(1) 时,我在终端中收到下一个错误:

[ 警告:0] 全局 /tmp/pip-req-build-ms668fyv/opencv/modules/videoio/src/cap_v4l.cpp (893) 打开 VIDEOIO(V4L2:/dev/video1): 无法按索引打开摄像头

我尝试将所有权限授予 /dev/video1, sudo chmod 777 /dev/video1.

我正在使用 linux mint。

【问题讨论】:

    标签: python opencv jupyter-notebook video4linux


    【解决方案1】:

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

    因此,当您尝试使用索引号 0 时,它可以正常工作并使用 VideoCapture(0) 打开相机。但是第二台相机呢?丢失可能有一些不同的原因:

    • 当前的驱动系统不支持(不是 video4linux 设备或旧内核版本)
    • 这不是 USB 插入式摄像头。

    结果不是VideoCapture无法读取;只是因为你试图用错误的索引打开它,这是相机的数据文件。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-29
      • 1970-01-01
      • 2017-11-13
      • 2022-12-03
      • 2022-11-23
      • 2018-03-18
      • 1970-01-01
      • 2019-04-18
      相关资源
      最近更新 更多