Crear archivos AVI en OpenCV

He intentado crear una aplicación usando OpenCV y Visual Studio 2008, para capturar imágenes de una cámara web, aplicarles un filtro y luego escribirlas en un archivo AVI. Todo funciona, excepto crear el archivo AVI.

El problema es que funciona en mi computadora, pero no funciona en la computadora de mi colega. La razón de eso (creo) es que él no tiene los codificadores de video necesarios para que OpenCV los use.

La función cvCreateVideoWriter no devuelve NULL, pero termino con un archivo de 0kb en el disco.

Por qué no probar todos los códecs, para jugar a guardar:

CV_FOURCC('P','I','M','1') = MPEG-1 codec CV_FOURCC('M','J','P','G') = motion-jpeg codec (does not work well) CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec CV_FOURCC('U', '2', '6', '3') = H263 codec CV_FOURCC('I', '2', '6', '3') = H263I codec CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec 

Un código de códec de -1 abrirá una ventana de selección de códec (en Windows).

En OpenCV 3.0.0, el archivo readme.txt para ffmpeg dice

“También existe nuestro codec jpeg de movimiento autónomo, que puedes usar sin preocupaciones. Maneja streams CV_FOURCC (‘M’, ‘J’, ‘P’, ‘G’) dentro de un contenedor AVI (” .avi ” ). ”

(sources \ 3rdparty \ ffmpeg \ readme.txt)

-1 y cv :: VideoWriter :: fourcc (‘M’, ‘J’, ‘P’, ‘G’) son las únicas opciones que funcionan para mí en Windows 8.1.

El problema fue que mi colega tenía instalada una versión anterior de OpenCV. Si utilicé el nuevo OpenCV, tenía un codificador e hizo todo el trabajo.