Affichage QML rectangles sur le flux vidéo basé sur la reconnaissance de l'objet

0

La question

J'ai un flux vidéo comme décrit dans Qt Vidéo de Présentation, à l'aide de la MyVideoProducer la mécanique. La source les images sont analysées et j'ai une liste de composants qui sont connectés (x,y,largeur,hauteur) et je veux superposition de rectangles sur la vidéo.

Puis-je le faire en envoyant une liste de rectangle de coordonnées de QML et l'ont lieu les rectangles ou dois-je créer mon propre superposition d'images?

J'ai regardé la QtQuick système de particules, mais il ne semble pas adaptée. D'autres questions ont le tracé du rectangle géré par Qt/Qml, mais j'ai besoin de le rectangle être placé selon les coordonnées que la vision de pipeline a déterminé qu'en C++, et envoyé à l'QML front-end. Ils seront périmés ou liées à des images vidéo.

Il est un exemple, mais la superposition est sans rapport avec la vidéo. Je pense que j'ai besoin d'une superposition qui est synchronisé à l' onNewVideoContentReceived(). QML ne sera pas en mesure de déterminer la façon de garder une liste de rectangle en synchronisation avec la vidéo facilement.

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

La meilleure réponse

1

J'ai juste modifié le tampon d'origine de la création, débayérisés à partir d'un appareil photo, pour dessiner les rectangles moi-même dans le format RGBA. Il évite le problème de synchronisation de l'image vidéo à l'emplacement d'objet de données. Je n'ai pas alpha mais juste le remplacement de pixels. Pour mon contenu, la quantité de boîtes par rapport à la zone vidéo n'était pas grande. Avec alpha rectangles et beaucoup d'objets, il peut être plus efficace d'impliquer un GPU. En fait, vous pouvez utiliser la taille fixe de places et de ne pas la CCL délimitée de la région, et ce pourrait être nettement plus rapide avec un GPU.

Un QML solution serait plus élégant, mais cette solution fonctionne.


D'autres options sont QVideoFrame::setMetaDatacela peut cravate la CCL QRect liste pour le cadre, de sorte que l'association est claire et attaché à l'image. La méthode onNewVideoContentReceived() de la MyVideoProducer pourrait rendre les rectangles à partir de C++.

Une autre option est QAbstractVideoFilter, ce qui va modifier l'original de la mémoire tampon pour ajouter des données supplémentaires pour les images présentées. C'est facile à activer/désactiver via le QML avant la fin.

Toutes les solutions s'appuient sur le C++ donc il n'est pas facile de changer de coloration, etc en QML. Par exemple, si l'objet possède une propriété reconnue comme "homme", "femme", 'chat', 'véhicule', etc le QML peut mettre à jour le soulignant de manière appropriée et à maintenir une comptabilité sur les types d'objet.

2021-11-26 16:16:56

Dans d'autres langues

Cette page est dans d'autres langues

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