Sto provando a catturare immagini da una telecamera IP in tempo reale. Lo stream funziona perfettamente in VLC, ma OpenCV cvQueryFrame()
sembra intaccare e corrompere le immagini in arrivo fino al punto di non riconoscimento.Problemi di acquisizione di immagini OpenCV/FFMpeg
Ancora una volta, l'acquisizione da file funziona correttamente, ma non in diretta. Nel caso in cui faccia la differenza, sto usando un URL di connessione rtsp; Ho anche provato questo con due diversi modelli di fotocamera (marche diverse), e il problema rimane.
Inoltre, il codec (sto assumendo) sta emettendo diversi errori del tipo seguente: Error at MB: 1746
e concealing 6000 DC, 6000 AC, 6000 MV errors
.
Cosa posso fare?
Update: Il primo errore nella sequenza è sempre cannot parallelize deblocking type 1, decoding such frames in sequential order
Aggiornamento 2: Va bene, sembra che OpenCV/FFMPEG ha un problema con i flussi RTSP/H264. Ho provato la libreria Qt Phonon, che inoltre non funziona, e ho dato alla libreria Live555 una rapida panoramica. Quest'ultimo sembra funzionare, nel senso che tutti dicono che lo fa, e l'esempio di applicazione (OpenRTSP) in effetti riproduce bene il mio stream. Tuttavia, per essere onesti, fare i conti con il codice Live555 sembra una questione lunga che difficilmente posso permettermi in questo momento. Salvo altre alternative, credo che dovrò seguire questa strada.
C'è qualche altra soluzione che viene in mente?
Update 3: ho preso il test RTSP client dal codice LIVE555 di lavorare, quindi so come estrarre H264 informazioni fotogramma di un corso d'acqua, ma ora ho bisogno di ricombinare le informazioni telaio in fotogrammi effettivi visualizzabili, che non sembra qualcosa di semplice! Chiunque abbia familiarità con Live555 sa come farlo? Grazie.
Quale versione di OpenCV stai usando? in esso su Linux o Windows? – Mohammad
OpenCV 2.3.1 su Win 7. –
'cvQueryFrame()' potrebbe restituire un'immagine NULL. Assicurati di testare questo prima di fare qualcosa con esso. – karlphillip