我使用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()
我尝试了各种网络摄像头,并对网络上建议的代码进行了各种更改。
答案 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 Windows和on Fedora的Python特定教程。此外,PyImageSearch在macOS和Linux上从源代码编译OpenCV时有很多博客文章:Ubuntu 16.04,Ubuntu 14.04,macOS,macOS via Homebrew(附带{{ 3}}),以及许多其他Linux风格(例如Raspbian)和旧版Python的帖子;如果不能覆盖您,请搜索网页。
答案 1 :(得分:0)
只需卸载opencv-contrib-python库,然后重新安装opencv-python和opencv-python-headless