No se puede acceder a la cámara web con OpenCV

Estoy usando OpenCV 2.2 con visual studio 2010 en una PC de ganar 7 64 bit.

Puedo mostrar imágenes y reproducir archivos AVI a través de OpenCV como se indica en el libro “Learning OpenCV”, pero no puedo capturar imágenes de webcam. Incluso las muestras entregadas junto con los archivos OpenCV no pueden acceder a la cámara web.

Me preguntan por “fuente de video -> fuente de captura” y hay dos opciones: cámara web HP Splitter y cámara web HP. Si selecciono la cámara web HP, la ventana se cierra inmediatamente sin mostrar ningún error. (Creo que cualquier mensaje de error es demasiado rápido para ser visto antes de que se cierre). Si selecciono el divisor de cámara web HP, la nueva ventana, donde se supone que deben aparecer las imágenes de la cámara web (video), está llena de gris uniforme. El LED de la cámara está encendido pero no se ve ningún video. Mi cámara web funciona bien con flash (www.testmycam.com) y con DirectShow http://www.codeproject.com/KB/audio-video/WebcamUsingDirectShowNET.aspx

Intenté obtener un mensaje de error al usar esto:

#include "cv.h" #include "highgui.h" #include  using namespace cv; using namespace std; int main(int, char**) { VideoCapture cap("0"); // open the default camera if(!cap.isOpened()) // check if we succeeded { cout <> frame; // get a new frame from camera cvtColor(frame, edges, CV_BGR2GRAY); GaussianBlur(edges, edges, Size(7,7), 1.5, 1.5); Canny(edges, edges, 0, 30, 3); imshow("edges", edges); if(waitKey(30) >= 0) break; } // the camera will be deinitialized automatically in VideoCapture destructor return 0; } 

Y el mensaje de error que recibí fue:

 warning: Error opening file (C:\Users\vp\work\ocv\opencv\modules\highgui\src\cap _ffmpeg.cpp:454) Error opening camera! 

No sé lo que es este “cap_ffmpeg.cpp” y no sé si este es un problema con el entrometido material “HP Media Smart”.

Cualquier ayuda será apreciada.

Tuve el mismo problema en Windows 7 de 64 bits. Tuve que recomstackr opencv_highgui cambiando las “Definiciones del preprocesador” en el panel C / C ++ de la página de propiedades para incluir:

HAVE_VIDEOINPUT HAVE_DSHOW

Espero que esto ayude

El cap_ffmpeg.cpp es el archivo fuente que usa ffmpeg para realizar la captura del dispositivo. Si el ejemplo predeterminado proporcionado por OpenCV no funciona con su cámara web, no tiene suerte. Te sugiero que compres otro que sea compatible.

Recientemente, he instalado OpenCV 2.2 y NetBeans 6.9.1. Tuve un problema con la captura de la cámara, la imagen en la ventana era negra pero el progtwig funciona perfectamente, sin errores. Tuve que ejecutar NetBeans como usuario administrador para solucionar este problema.

Espero que esto pueda ayudarlos a todos.

Acabo de cambiar a OpenCV 2.2 y básicamente tengo el mismo problema, pero una comstackción de 32 bits con Vista. La cámara web se iniciará pero obtendré un mensaje de error estableciendo la propiedad de ancho para la cámara. Si solicito específicamente la cámara DirectShow, la cvCreateCameraCapture fallará.
Lo que creo que está sucediendo es que la versión de distribución de HighGUI fue comstackción excluyendo la cámara DirectShow. La cámara preferida de Windows en OpenCV solía ser Video para Windows, VFW, pero eso ha quedado obsoleto desde que salió Windows Vista y ha creado todo tipo de problemas. Por qué no solo lo incluyen, no lo sé. Compruebe el archivo fuente cap.cpp

Mi próximo paso es reconstruir HighGUI yo mismo y asegurarme de que la bandera HAVE_DSHOW esté configurada. Parece que recuerdo haber tenido el mismo problema con la última versión de OpenCV que he estado usando hasta que la reconstruí asegurándome de que la versión de DirectShow estuviera habilitada.

Experimenté el mismo problema. Mi Vaio Webcam LED está encendido pero no hay imagen en la pantalla. Luego traté de exportar el primer fotogtwig a un archivo JPEG y su funcionamiento. Luego traté de insertar un retraso de 33 ms antes de capturar cualquier cuadro, esta vez funciona como un amuleto. Espero que esto ayude.

Aquí hay un artículo que escribí hace un tiempo. Utiliza la biblioteca videoInput para obtener información de las cámaras web. Utiliza DirectX, por lo que funciona con casi todas las cámaras web que hay. Captura de imágenes con DirectX

Una vez que cree el cv::VideoCapture , debe dar un entero, no una cadena (ya que la cadena implica que la entrada es un archivo).

Para abrir la cámara predeterminada, abra la secuencia con

 cv::VideoCapture capture(0); 

y funcionará bien.

GUI de CMAKE, MSVC ++ 10E, Vista de 32 bits, OpenCV2.2

Parece que la opción HAVE_VIDEOINPUT/WITH_VIDEOINPUT no funciona.

Sin embargo, agregando: /D HAVE_DSHOW /D HAVE_VIDEOINPUT a CMAKE_CXX_FLAGS , y CMAKE_C_FLAGS hizo el truco para mí (habrá CMAKE_C_FLAGS debido a redefiniciones de macros).