2012-09-14 15 views
5

¿Podría ser que haya un error en OpenCV2.4 highgui para capturar fotogramas de video en Windows?Posible error en OpenCV2.4 capturando fotogramas del video

que instalé las bibliotecas precompilados, los compilados por mí, puedo compilar todo perfectamente y puedo ejecutar mis programas si

que son a base de imágenes. El problema es solo para videos. OpenCV se bloquea en esta función siempre:

virtual IplImage* retrieveFrame(int) 
    { 
     unsigned char* data = 0; 
     int step=0, width=0, height=0, cn=0; 

     if(!ffmpegCapture || 
      !icvRetrieveFrame_FFMPEG_p(ffmpegCapture,&data,&step,&width,&height,&cn)) <-------CRASHES HERE 
      return 0; 
     cvInitImageHeader(&frame, cvSize(width, height), 8, cn); 
     cvSetData(&frame, data, step); 
     return &frame; 
    } 

Esto está dentro de la clase cap_ffmpeg.cpp y es llamado por VideoCapture.

Probé las versiones 2.4.2 y 2.4.9. Mis programes estaban trabajando finde con opencv2


Más información

  • Windows 7

  • construir los proyectos con cmake (importante, ya que podría ser que cmake no está construyendo/hallazgo los códecs correctos)

  • VisualStudio 9 2008

  • OpenCV 2.4.2

EDITAR

Parece que en realidad es un bug, así, ¿cómo puedo solucionar este problema y cambiar el código para poder leer avi archivos?

+2

¿Por qué no? Es software :) Parece que su problema se describe http://code.opencv.org/issues/2115 –

+0

@Sergey jeje, sí, lo creo, pero es un dolor.Necesito desarrollar y ahora tengo que luchar con esto ... paciencia –

+0

según la descripción que necesita para degradar 2.4-> 2.1 o simplemente arreglarlo usted mismo y publicar su parche para ayudar a otras personas :) Por lo que sé, es malo idea de usar ffmpeg en Windows. AFAIR debe ser captura de DirectDraw para OpenCV, pero tal vez estoy equivocado. –

Respuesta

5

Como solución temporal, decidí volver a codificar los videos para que OpenCV no use el ffmpeg. Usé VirtualDub con la compresión microsoft video 1, que usa el controlador "msvidc32.dll".

Funciona con todos mis videos, así que es suficiente por ahora ya que puedo seguir trabajando con OpenCV en Windows.

enter image description here

1

tuve un problema similar. Descargué VirtualDub, pero no abrió uno de mis videos avi debido a su codificación FMP4. Entonces, al final, la solución que resolvió el problema fue instalar ffdshow, un decodificador para Windows. Vea este enlace: http://www.moviecodec.com/video-codecs/fmp4-codec-with-virtualdub-45814/

¡Entonces ya no necesito usar VirtualDub para volver a codificar mi video!

1

si usa x64. Utilice opencv_ffmpeg245_64.dll para resolver este problema. O cambie el nombre de opencv_ffmpeg245_64.dll a opencv_ffmpeg245.dll para resolver el problema.

Cuestiones relacionadas