La cámara web no funciona en la versión pip de opencv-python y opencv-contrib-python

He estado enfrentando un problema con la webcam en opencv en python usando anaconda.

El problema es el siguiente: no puedo abrir la cámara web si opencv se instala a través de cualquiera de los dos:
pip install opencv-python (disponible 3.1,3.2,3.3), o
pip install opencv-contrib-python (disponible 3.2,3.3)

Sin embargo funcionará si y solo si lo instalo desde
conda install opencv (disponible opencv 3.1)

Sin embargo, alguna funcionalidad de opencv solo se proporciona en las versiones más nuevas o en la versión contrib actualmente no disponible a través de conda. ¿Alguien tiene una idea de por qué las versiones pip no funcionan?

Actualización => El paquete Pip en pypi no está vinculado contra FFMPEG para linux:
conda install -c conda-forge opencv proporciona 3.3 pero sin contribución
=> si se necesita otra versión, se requiere construir desde la fuente

Aquí el código utilizado para usar la cámara web: (Sí, probé varias variaciones sugeridas

 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() 

Probé varias cámaras web y varias alternativas al código como se sugiere en la web.

Las bibliotecas subyacentes no están vinculadas en el paquete pip . Esta fue una opción de diseño para que el paquete sea más universalmente instalable.

De la documentación de Python Package Index (PyPI) para el paquete opencv-python :

P: ¿Por qué no puedo abrir archivos de video en la distribución X de GNU / Linux o en macOS?

R: La entrada / salida de video de OpenCV depende en gran medida de FFmpeg. Los binarios de Manylinux y macOS OpenCV no se comstackn en su contra. El propósito de estos paquetes es proporcionar la experiencia de instalación más sencilla posible para los enlaces de OpenCV Python y deberían funcionar directamente de forma inmediata. Al agregar FFmpeg como una dependencia adicional sin una comstackción FFmpeg “universal” (p. Ej., Una comstackción con licencia LGPL como en las ruedas de Windows), el objective es considerablemente más difícil de lograr. Esto podría cambiar en el futuro.

Puede comstackr OpenCV desde la fuente si desea usar las versiones más nuevas y no tener estos problemas. Hay una serie de tutoriales de este tipo. OpenCV tiene un tutorial específico de Python para comstackr en Windows y en Fedora . Además, PyImageSearch tiene un número muy popular de publicaciones de blog sobre cómo comstackr OpenCV desde fonts en macOS y Linux: Ubuntu 16.04 , Ubuntu 14.04 , macOS , macOS a través de Homebrew (con un artículo de solución de problemas adjunto), junto con una serie de otros sabores de Linux (por ejemplo, Raspbian) y publicaciones para versiones antiguas de Python; solo busca en la web si eso no te cubre.