Creazione di file AVI in OpenCV

Ho cercato di creare un’applicazione utilizzando OpenCV e Visual Studio 2008, per acquisire immagini da una webcam, applicare un filtro e poi scriverle in un file AVI. Tutto funziona, tranne la creazione del file AVI.

Il problema è che funziona sul mio computer, ma non funziona sul computer del mio collega. La ragione di ciò (penso) è che non ha i codificatori video necessari per OpenCV da usare.

La funzione cvCreateVideoWriter non restituisce NULL, ma si finisce con un file 0kb sul disco.

Perché non provare tutti i codec, per poter giocare a salvare:

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 codice codec di -1 aprirà una finestra di selezione codec (in windows).

In OpenCV 3.0.0, il readme.txt per ffmpeg dice

“Esiste anche il nostro codec jpeg motion autonomo, che puoi usare senza problemi: gestisce gli stream CV_FOURCC (‘M’, ‘J’, ‘P’, ‘G’) all’interno di un contenitore AVI (” .avi “). ).”

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

-1 e cv :: VideoWriter :: fourcc (‘M’, ‘J’, ‘P’, ‘G’) sono le uniche opzioni che funzionano per me su Windows 8.1.

Il problema era che il mio collega aveva una versione precedente di OpenCV installata. Se ho usato il nuovo OpenCV aveva un encoder e ha fatto tutto il lavoro.