Display QML rettangoli in streaming video basato sul riconoscimento di oggetti

0

Domanda

Ho un flusso video come descrivere in Qt Panoramica Video, utilizzando il MyVideoProducer la meccanica. Fonte immagini vengono analizzati e ho una lista di componenti connesse (x,y,larghezza,altezza) e voglio sovrapposizione rettangoli sul video.

Posso farlo inviando un elenco di rettangolo coordinate per QML e hanno posto i rettangoli o devo creare la mia propria sovrapposizione di immagini?

Ho guardato il QtQuick sistema di particelle, ma non sembra in forma. Altre domande hanno il layout del rettangolo gestito da Qt/Qml, ma ho bisogno di rettangolo per essere posizionati secondo le coordinate che la visione pipeline ha determinato in C++ e inviato al QML front-end. Saranno raffermo e/o connesse ai fotogrammi video.

C'è un esempio, ma la sovrapposizione non è correlato al video. Penso che ho bisogno di una sovrapposizione che è sincronizzato con la onNewVideoContentReceived(). QML non sarà in grado di determinare come mantenere una lista di rettangolo in sincronia con il video.

computer-vision qml qt qt5
2021-11-22 18:51:32
1

Migliore risposta

1

Ho appena modificato il buffer originale creazione, debayered da una fotocamera, per disegnare rettangoli di me stesso, in formato RGBA. Si evita il problema di sincronizzazione dei frame video con l'oggetto dei dati di posizione. Non ho usato alfa, ma solo la sostituzione di pixel. Per i miei contenuti, la quantità di scatole di contro l'area video non è stato grande. Con alfa rettangoli e un sacco di oggetti, può essere più efficace per coinvolgere una GPU. In realtà, si potrebbe fissa piazze dimensioni e non il CCL delimitata regione, e questo potrebbe essere significativamente più veloce con una GPU.

Un QML soluzione sarebbe più elegante, ma questa soluzione funziona.


Opzioni Alternative sono QVideoFrame::setMetaDataquesto può legare il CCL QRect elenco al telaio, in modo che l'associazione è chiaro e legato al telaio. Il metodo onNewVideoContentReceived() del MyVideoProducer potrebbe rendere i rettangoli da C++.

Un'altra opzione è QAbstractVideoFilter, che permetterà di modificare il buffer originale per aggiungere ulteriori dati per le immagini presentate. Questo è facile per attivare/disattivare tramite il QML front-end.

Tutte le soluzioni si basano su C++, quindi non è facile cambiare la colorazione, ecc in QML. Per esempio, se l'oggetto ha una proprietà riconosciuta come "maschio", "femmina", "gatto", "veicolo", ecc il QML in grado di aggiornare l'evidenziazione in modo appropriato e mantenere una contabilità dei tipi di oggetto.

2021-11-26 16:16:56

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................