Рисование фигур поверх получаемого видео.

Обсуждение вопросов, связанных с обработкой аудио и видео информации
Ответить
BARD
beginner
beginner
Сообщения: 20
Зарегистрирован: 13 янв 2012, 16:28
Версия LabVIEW: 2022
Благодарил (а): 1 раз
Контактная информация:

Рисование фигур поверх получаемого видео.

Сообщение BARD »

Добрый день! Требуется нарисовать "прицел-плюсик" (как в компьютерных играх) поверх видео, непрерывно получаемого с web-камеры.
Более детально алгоритм задачи выглядит так:
1. Поверх получаемого видео с помощью курсора мышки выставляем наш прицел, который перемещается вместе с курсором по отображаемому видео и по щелчку запоминаем координаты.
2. Если все ок, то по команде (любой) при помощи полученных координат уже автоматически выставляем такой же прицел, но который будет все время отображаться статично на этом месте поверх поступаемого видео, не зависимо от того, что мы делаем мышкой или клавиатурой.
3. При нажатии заданной клавиши статичный прицел нужно убрать и вернуться к пункту 1 и так до бесконечности.

Собственно, получать видео умею, рисовать отдельно прицел и чтобы он перемещался за мышкой умею, а вот сделать статичное отображение прицела поверх видео не могу. Скорее всего, это довольно легко, но у меня закончились идеи.

Помогите, пожалуйста, хотя бы советом!
Вложения
aim on video.vi
(38.53 КБ) 233 скачивания
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Рисование фигур поверх получаемого видео.

Сообщение dadreamer »

BARD писал(а):Собственно, получать видео умею, рисовать отдельно прицел и чтобы он перемещался за мышкой умею, а вот сделать статичное отображение прицела поверх видео не могу. Скорее всего, это довольно легко, но у меня закончились идеи.
После просмотра кода у меня только один вопрос - а почему нельзя было использовать инструменты Vision из палитры Overlay, ведь уже используются IMAQdx?..
Вложения
maxresdefault.jpg
maxresdefault.jpg (39.68 КБ) 4004 просмотра
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5461
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 27 раз
Поблагодарили: 86 раз

Re: Рисование фигур поверх получаемого видео.

Сообщение IvanLis »

BARD писал(а):Собственно, получать видео умею, рисовать отдельно прицел и чтобы он перемещался за мышкой умею, а вот сделать статичное отображение прицела поверх видео не могу. Скорее всего, это довольно легко, но у меня закончились идеи.

Помогите, пожалуйста, хотя бы советом!
Вам нужно сохранить координаты по нажатии на кнопку, я подцепил на нее сейчас клавишу F11, иначе мышку приходится выводить за пределы изображения. Я немного удалил, но для того что бы понять принцип, этого достаточно.
aim on video.vi
(22.29 КБ) 196 скачиваний
ну и по поводу отрисовки крестика, Вам уже написали
получится значительно быстрее и нет необходимости каждый кадр сжимать, писать в файл, читать из файла и преобразовывать в массив
да и сам контрол от Vision шустрее работает
BARD
beginner
beginner
Сообщения: 20
Зарегистрирован: 13 янв 2012, 16:28
Версия LabVIEW: 2022
Благодарил (а): 1 раз
Контактная информация:

Re: Рисование фигур поверх получаемого видео.

Сообщение BARD »

Большое спасибо за ответы! Уже решил всё своим способом.
После просмотра кода у меня только один вопрос - а почему нельзя было использовать инструменты Vision из палитры Overlay, ведь уже используются IMAQdx?.
Дело в том, что в дальнейшем я хочу рисовать не только прицелы, но и другие фигуры, более сложные. Также я хочу иметь возможность более прецезионно с помощью контроллеров задавать координаты фигур. В моей случае у рисунка есть индикатор top-left, к которому можно привязать координаты всех фигур. У imaq я не нашел функции получения координат изображения, поэтому либо в imaq использовать только мышку с ее координатами и очень точно выставлять курсор каждый раз, чтобы попасть в нужную точку (мне иногда вплоть до пиксела нужно попадать), либо моей программой, которая медленнее намного, но зато координаты с помощью контроллеров можно легко выставлять.
Может быть у imaq тоже есть функция наподобие top-left для получения координат именно изображения? Если да, то был бы очень признателен, если бы Вы показали, где эти команды находятся.
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Рисование фигур поверх получаемого видео.

Сообщение dadreamer »

BARD писал(а):Может быть у imaq тоже есть функция наподобие top-left для получения координат именно изображения? Если да, то был бы очень признателен, если бы Вы показали, где эти команды находятся.
Если под top-left подразумевается свойство Mouse, выдающее Position / Modifiers, то у IMAQ-контрола есть аналогичные свойства Last Mouse Position, Image Area Position, Image Center Position - см. пример https://forums.ni.com/t5/LabVIEW/conver ... 52#M744733 Вот этот пример также может пригодиться: https://forums.ni.com/t5/Example-Progra ... -p/3490784 А если полистать методы (Invoke Nodes), а не свойства, то можно найти обработчик событий Get Last Event. С помощью него можно отследить событие клика на изображении, событие зуммирования и т.д.

Или всё-таки что-то другое имелось в виду?
BARD
beginner
beginner
Сообщения: 20
Зарегистрирован: 13 янв 2012, 16:28
Версия LabVIEW: 2022
Благодарил (а): 1 раз
Контактная информация:

Re: Рисование фигур поверх получаемого видео.

Сообщение BARD »

Или всё-таки что-то другое имелось в виду?
Да, имел ввиду это. Спасибо! Уже почти все, что нужно, сделал.
Ответить

Вернуться в «Работа с графикой и звуком»