Laboratorio Laboratorio – Elaborazione Elaborazione di Video

Transcript

Laboratorio Laboratorio – Elaborazione Elaborazione di Video
http://imagelab ing unimo it
http://imagelab.ing.unimo.it
Dispense del corso di Elaborazione di Immagini e Audio Digitali
Laboratorio – Elaborazione
di Video
Prof. Roberto Vezzani
Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia
Apertura di Video
•
•
•
•
Nell’ambiente è già presente la possibilità di aprire sorgenti video AVI e
Webcam
L’apertura e la gestione delle sorgenti video sono inserite nella gerarchia di
classi che derivano da CVideoSource
I particolare
In
ti l
sono importanti
i
t ti le
l seguenti
ti funzioni
f
i i membro:
b
Lettura delle dimensioni dei frame:
– int GetWidth();
– int GetHeight();
•
Recupero di una copia o del puntatore al frame corrente
– CImageRGB* GetPointerToCurrentFrame();
– CImageRGB* GetCurrentFrame();
•
Recupero di una copia o del puntatore al penultimo frame letto
– CImageRGB*
CImageRGB GetPointerToLastFrame();
– CImageRGB* GetLastFrame();
Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia
Elaborazione di un Video
• Una volta aperto un video e premuto il tasto Play nella toolbar (o
Process nel menu Video) viene richiamata una funzione di
elaborazione per ogni frame del filmato.
• La funzione richiamata è definita in VideoProcessing.cpp
– bool CMyApplication::OnVideoProcessFrame();
• All
All’interno
interno di questa funzione vengono eseguiti i seguenti step:
–
–
–
–
–
Apertura del frame corrente
Elaborazione
Salvataggio e/o visualizzazione Output
Deallocazione variabili dinamiche
Avanzamento sorgente video
Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia
Video Output
• In libreria è presente anche la gestione dell’output come AVI o come
sequenza di immagini BMP o JPG
• La gerarchia di classi deriva da CVideoOutput
• In fase di creazione del VideoOutput
p è necessario specificare,
p
, olre al
nome del file, le dimensioni del video
• Il metodo
d d
da richiamare
i hi
per aggiungere
i
un frame
f
è:
è
– bool AppendFrame(CImageRGB * pimgFrame);
Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia
Lista di Finestre per Video
•
•
•
Le finestre di output per elaborazione di video richiedono aggiornamenti dalla
applicazione
E’ necessario conservare i puntatori alle finestre
Può essere comodo chiudere e riaprire le finestre
•
Lista apposita definita in CMyApplication:
– CListOfWindows *m_plstWin_Video;
•
•
•
Viene costruito automaticamente un Menu con le finestre aggiunte alla lista
Conviene creare subito tutte le finestre di cui si ha bisogno (nel costruttore di
CMyApplication)
Al termine o durante il processing:
pwin
i = m_plstWin_Video->GetPointerToColorWindow("Input");
l Wi Vid
G P i
T C l Wi d ("I
")
if (pwin) pwin->UpdateWithImage(pimgInput);
Roberto Vezzani - Imagelab – Università di Modena e Reggio Emilia