rostros - reconocimiento facial opencv python
OpenCV: imagen en negro capturada desde una cámara usb (4)
Lo primero, sugeriría es, visite este enlace y compruebe que su cámara funciona o no
http://www.youronlinemirror.com/
En caso afirmativo, revise el enlace a continuación para comenzar, también encontrará un buen código abierto de c ++, el código que está utilizando es el código c de opencv1 api, prefiero animarlo a usar c ++ que el versión anterior de opencv.
http://opencv-srf.blogspot.in/2011/09/capturing-images-videos.html
si quieres una respuesta para tu código, entonces, es simple, como dices que está dando una pantalla en negro, lo que sucedió en mi caso cuando comencé a trabajar con opencv, no puedo tomar los datos del dispositivo, así que prueba esto, podría funcionar, como lo hizo para mí.
añadir
cvQueryFrame( capture );
antes de
IplImage* frame = cvQueryFrame( capture );
Estoy tratando de capturar un cuadro de imagen de una cámara USB usando opencv. Sin embargo, siempre obtengo un marco negro. He leído muchas publicaciones con este problema e intenté con todas las sugerencias, pero nada funcionó para mí.
Empecé a usar el código que se discute aquí: http://opencv-users.1802565.n2.nabble.com/Using-USB-Camera-td6786148.html
Intenté incluir el método cvWaitKey (1000) después de muchas oraciones ''críticas''. Como puede ver, el valor de espera es muy alto (1000).
También he intentado guardar el marco de la imagen y, por igual, es una imagen en negro.
Estoy usando el siguiente sistema:
- OpenCV 2.2.0
- Windows 7, 32 bits
- Visual Studio 2010 (C ++)
- una cámara de tablero USB (que no conozco el fabricante)
La cámara usb funciona bien con AMCAP.EXE 1.00.
¿Podría ser debido a los controladores de cámara utilizados por Windows? ¿Podría cambiar a otros controladores que funcionan mejor para OpenCV 2.2.0?
Gracias
De acuerdo. Como prometí su solicitud en los comentarios, y lamento haberte hecho esperar, realmente he estado ocupado. Apenas tuvo tiempo de publicar esta respuesta también. Pero aquí está:
Este soy yo simulando que opencv está capturando una imagen negra. En la ventana de salida, que le pregunté en los comentarios sobre lo que dice, muestra que hay un error.
Después de investigar, me di cuenta de que se debe al formato disponible de la cámara:
De primo, esta es una cámara más pésima. Si tiene una cámara mejor que la de Logitech, puede ver que el formato disponible es mucho más.
Hay muchos métodos, puedes probar algo como
capture.set(CV_CAP_PROP_FRAME_WIDTH , 640);
capture.set(CV_CAP_PROP_FRAME_HEIGHT , 480);
capture.set (CV_CAP_PROP_FOURCC, CV_FOURCC(''B'', ''G'', ''R'', ''3''));//diff from mine, using as example
entonces la cámara web podrá chasquear. Esta cámara web está defectuosa, por lo que la imagen no es muy bonita.
Espero que este sea tu problema pero puede que no sea el caso también. Me gustan los problemas de depuración, pero no puedo desestimar todas las posibles causas por las que esto sucede, ya que estoy muy ocupado, como usted pidió un ejemplo, este es uno de ellos. Aclamaciones. Si pudiera decirme qué dice el error de ventana de salida, probablemente pueda ayudar más.
EDITAR (para responder más en sus comentarios):
Ok, quiero que pruebes algunas cosas:
1) Primero, en vez de usar cvQueryFrame
, o métodos de captura similares, quiero que intente usar esa cámara web para capturar un video. Espere hasta tal vez 10 segundos para ver si es exitoso. Por esta razón, algunas cámaras (de menor calidad) tardan bastante en calentarse y los primeros fotogramas que capturan pueden ser vacíos.
2) Si el paso uno no funciona, intente escribir
cout << cv::getBuildInformation() << endl;
y pegar los resultados para E / S de medios y E / S de video? Quiero ver los resultados. También sospecho de las dependencias de tu biblioteca, pero como dijiste que funciona con una cámara de logitech, dudo que sea así. Por supuesto, siempre existe la posibilidad de que la cámara no sea compatible con OpenCV. Por cierto, ¿la cámara tiene alguna marca?
3) Alternativamente, solo busque los controladores USB en línea e instálelos, tuve un amigo que hizo esto por un problema similar, pero no estoy seguro del proceso.
Incluso yo enfrenté el mismo problema de pantalla negra mientras ejecutaba programas relacionados con OpenCV. Entonces, en lugar de usar la cámara USB, utilicé una cámara móvil que funcionaba perfectamente bien. Utilice las aplicaciones de Google, como DroidCam (instale DroidCam en un dispositivo móvil o en una computadora portátil / PC) para conectar su cámara móvil a la computadora portátil a través de Wi-Fi.
Pasé por el mismo problema que el tuyo. ¡Entonces acabo de cambiar la versión de 3.1.0 a 2.4.13, entonces mi webcam funciona! No más imágenes negras. Supongo que la versión 3 no es compatible con el vs15. Pensando que es posible que ya hayas resuelto el problema hace mucho tiempo. Pero solo publíquelo para que los demás sepan si tienen el mismo problema.