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