Отображение прямоугольников QML в видеопотоке на основе распознавания объектов

0

Вопрос

У меня есть видеопоток, как описано в Обзоре видео Qt, с использованием MyVideoProducer механика. Исходные изображения анализируются,и у меня есть список подключенных компонентов (x,y,ширина, высота), и я хочу наложить прямоугольники на видео.

Могу ли я сделать это, отправив список координат прямоугольников в QML и разместив в нем прямоугольники, или мне нужно создать собственные изображения наложения?

Я посмотрел на систему частиц QtQuick, но она, похоже, не подходит. Другие вопросы касаются расположения прямоугольника, управляемого Qt/Qml, но мне нужно, чтобы прямоугольник был размещен в соответствии с координатами, которые конвейер vision определил в C++ и отправил на интерфейс QML. Они будут устаревшими/связанными с видеокадрами.

Есть пример, но наложение не связано с видео. Я думаю, что мне нужно наложение, которое синхронизируется с onNewVideoContentReceived(). QML не сможет легко определить, как синхронизировать любой список прямоугольников с видео.

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

Лучший ответ

1

Я только что изменил исходное создание буфера, снятое с камеры, чтобы самому нарисовать прямоугольники в формате RGBA. Это позволяет избежать проблемы синхронизации видеокадра с данными о местоположении объекта. Я не использовал альфа, а просто заменил пиксели. Для моего контента количество коробок по сравнению с областью видео было невелико. С альфа-прямоугольниками и большим количеством объектов может быть более эффективным задействовать графический процессор. На самом деле, вы могли бы использовать квадраты фиксированного размера, а не ограниченную область CCL, и это могло бы быть значительно быстрее с графическим процессором.

Решение QML было бы более элегантным, но это решение работает.


Альтернативными вариантами являютсяQVideoFrame::setMetaData, это может привязать список QRect CCL к кадру, чтобы связь была четкой и привязанной к кадру. Способ onNewVideoContentReceived() из MyVideoProducer можно было бы отрисовывать прямоугольники из C++.

Другой вариант-QAbstractVideoFilter, который изменит исходный буфер, чтобы добавить дополнительные данные к представленным изображениям. Это легко включить/отключить с помощью интерфейса QML.

Все решения основаны на C++, поэтому в QML нелегко изменить цвет и т. Д. Например, если объект имеет признанное свойство, такое как "мужчина", "женщина", "кошка", "транспортное средство" и т. Д., QML может соответствующим образом обновить выделение и вести учет типов объектов.

2021-11-26 16:16:56

На других языках

Эта страница на других языках

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