OPenCV 3.3.0 的网络摄像头启动问题

Posted

技术标签:

【中文标题】OPenCV 3.3.0 的网络摄像头启动问题【英文标题】:Webcam launching issues with OPenCV 3.3.0 【发布时间】:2017-09-18 12:28:33 【问题描述】:

我注意到我在构建 opencv_contrib 模块后就开始遇到这个问题,因为在我的代码正常工作之前,现在即使使用简单的面部检测程序,我也无法使用 opencv 访问我的网络摄像头。相反,我得到了这个错误:

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.error: /io/opencv/modules/imgproc/src/color.cpp:10638: error: (-215) scn == 3 || scn == 4 in function cvtColor

但是对于一个打开相机的简单程序,它只是退出我认为它在 ret, frame = cam.read 行读取 ret 为 false

这是我的启动代码:网络摄像头

import cv2

cv2.namedWindow("preview")
cam = cv2.VideoCapture(0)

if cam.isOpened():  # try to get the first frame
    ret, frame = cam.read()
else:
    ret = False

while ret:
    cv2.imshow("preview", frame)
    ret, frame = cam.read()
    key = cv2.waitKey(20)
    if key == 27: 
        break

cv2.destroyWindow("preview")
cam.release()






  In[5] print (cv2.__version__)
     3.3.0
  In[6] webcam = cv2.VideoCapture(0)
        ret,frame = webcam.read()
        print (ret)
    False

【问题讨论】:

代码没有任何问题。我怀疑一些编译问题。找出答案的唯一方法,在没有 opencv_contrib 的情况下进行编译,并确保您的网络摄像头没有问题。 我很惊讶它仍然无法工作,但我可以将我的网络摄像头与其他应用程序一起使用。我使用的是 Linux 系统 你是如何安装 contrib 模块的? 我使用参数 OPENCV_EXTRA_MODULES 编译它,我还使用了 pip opencv-contrib 【参考方案1】:

这可能不是最好的解决方案,但我不得不删除 /usr/local/lib/python2.7/usr/local/lib/python3.5/dist-packages 中已编译的 cv2.so 文件 并从头开始安装 从我的构建目录:

    cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules -D BUILD_EXAMPLES=ON .. make -j7 make install sudo ldconfig

【讨论】:

以上是关于OPenCV 3.3.0 的网络摄像头启动问题的主要内容,如果未能解决你的问题,请参考以下文章

AVG 防病毒软件禁用了网络摄像头

有关opencv无法解码网络摄像头rtsp流的解决办法

OpenCV 网络摄像头帧率

让网络摄像头在 OpenCV 中工作

OpenCv - 从网络摄像头捕获帧时发生内存泄漏

OpenCV 找不到我的 USB 网络摄像头