网络摄像头在opencv-python和opencv-contrib-python的pip版本中不起作用

时间:2017-10-02 13:59:57

标签: python opencv anaconda webcam

我使用anaconda在python的opencv中遇到了网络摄像头的问题。

问题如下: 如果通过以下任何一个安装opencv,我无法打开网络摄像头:
pip install opencv-python(可用3.1,3.2,3.3)或
pip install opencv-contrib-python(可用3.2,3.3)

但是,当且仅当我从中安装时,它才会起作用 conda install opencv(可用opencv 3.1)

但是,opencv的某些功能仅在较新版本或目前无法通过conda提供的contrib版本中提供。 有没有人知道为什么pip版本不会起作用?

更新=> pypi上的Pip Packgage没有与针对Linux的FFMPEG链接:
conda install -c conda-forge opencv提供3.3但没有贡献  =>如果需要其他版本,则需要从源代码构建

此处用于使用网络摄像头的代码: (是的,我尝试了各种变化建议

import cv2
print (cv2.__version__)
camera = cv2.VideoCapture(0) #tried -1,0,1,...

if camera.isOpened(): # isOpened is always False for pip version
    print ("successfully opened Webcam")
else:
    print ("Webcam error")  
success,img = camera.read() # success is always False for pip version
print (success,img.shape)
camera.release()

我尝试了各种网络摄像头,并对网络上建议的代码进行了各种更改。

2 个答案:

答案 0 :(得分:0)

基础库未在pip包中链接。这是一个设计选择,使包更加普遍可安装。

来自Python包索引(PyPI)documentation for the opencv-python package

  

问:为什么我无法在GNU / Linux发行版X或macOS上打开视频文件?

     

答:OpenCV视频I / O在很大程度上取决于FFmpeg。 Manylinux和macOS OpenCV二进制文件不是针对它编译的。这些软件包的目的是为OpenCV Python绑定提供尽可能简单的安装体验,它们应该直接开箱即用。添加FFmpeg作为额外的依赖,没有“通用”FFmpeg构建(例如像Windows轮子中的LGPL许可构建),目标是相当难以实现的。这可能在将来发生变化。

如果您想使用较新版本而没有这些问题,可以从源代码编译OpenCV。有很多这样的教程。 OpenCV有一个针对compiling on Windowson Fedora的Python特定教程。此外,PyImageSearch在macOS和Linux上从源代码编译OpenCV时有很多博客文章:Ubuntu 16.04Ubuntu 14.04macOSmacOS via Homebrew(附带{{ 3}}),以及许多其他Linux风格(例如Raspbian)和旧版Python的帖子;如果不能覆盖您,请搜索网页。

答案 1 :(得分:0)

只需卸载opencv-contrib-python库,然后重新安装opencv-python和opencv-python-headless