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

Обсуждение вопросов, связанных с обработкой аудио и видео информации

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

Postby BARD on 13 Nov 2018, 15:43

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

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

Помогите, пожалуйста, хотя бы советом!
Attachments
aim on video.vi
(38.53 KiB) Downloaded 76 times
BARD
beginner
beginner
 
Posts: 11
Joined: 13 Jan 2012, 16:28
LabVIEW Version: 2011
Karma: 0

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

Postby dadreamer on 14 Nov 2018, 19:00

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

После просмотра кода у меня только один вопрос - а почему нельзя было использовать инструменты Vision из палитры Overlay, ведь уже используются IMAQdx?..
Attachments
maxresdefault.jpg
maxresdefault.jpg (39.68 KiB) Viewed 1351 times
User avatar
dadreamer
professor
professor
 
Posts: 3286
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 834
I/O VIP vision internet

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

Postby IvanLis on 14 Nov 2018, 21:35

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

Помогите, пожалуйста, хотя бы советом!

Вам нужно сохранить координаты по нажатии на кнопку, я подцепил на нее сейчас клавишу F11, иначе мышку приходится выводить за пределы изображения. Я немного удалил, но для того что бы понять принцип, этого достаточно.
aim on video.vi
(22.29 KiB) Downloaded 60 times


ну и по поводу отрисовки крестика, Вам уже написали
получится значительно быстрее и нет необходимости каждый кадр сжимать, писать в файл, читать из файла и преобразовывать в массив
да и сам контрол от Vision шустрее работает
User avatar
IvanLis
professor
professor
 
Posts: 4813
Joined: 02 Dec 2009, 17:44
Location: СССР
Medals: 7
Activity (2) Professionalism (1) Tutorials (1) Gold (1) Man of the year 2012 (1)
Автор (1)
LabVIEW Version: 2015, 2016
Karma: 763
hardware VIP bloggers teachers

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

Postby BARD on 16 Nov 2018, 17:19

Большое спасибо за ответы! Уже решил всё своим способом.
После просмотра кода у меня только один вопрос - а почему нельзя было использовать инструменты Vision из палитры Overlay, ведь уже используются IMAQdx?.

Дело в том, что в дальнейшем я хочу рисовать не только прицелы, но и другие фигуры, более сложные. Также я хочу иметь возможность более прецезионно с помощью контроллеров задавать координаты фигур. В моей случае у рисунка есть индикатор top-left, к которому можно привязать координаты всех фигур. У imaq я не нашел функции получения координат изображения, поэтому либо в imaq использовать только мышку с ее координатами и очень точно выставлять курсор каждый раз, чтобы попасть в нужную точку (мне иногда вплоть до пиксела нужно попадать), либо моей программой, которая медленнее намного, но зато координаты с помощью контроллеров можно легко выставлять.
Может быть у imaq тоже есть функция наподобие top-left для получения координат именно изображения? Если да, то был бы очень признателен, если бы Вы показали, где эти команды находятся.
BARD
beginner
beginner
 
Posts: 11
Joined: 13 Jan 2012, 16:28
LabVIEW Version: 2011
Karma: 0

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

Postby dadreamer on 16 Nov 2018, 18:13

BARD wrote:Может быть у 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. С помощью него можно отследить событие клика на изображении, событие зуммирования и т.д.

Или всё-таки что-то другое имелось в виду?
User avatar
dadreamer
professor
professor
 
Posts: 3286
Joined: 17 Feb 2013, 16:33
Medals: 4
Activity (1) Professionalism (1) Автор (2)
LabVIEW Version: 2.5 — 2019
Karma: 834
I/O VIP vision internet

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

Postby BARD on 20 Nov 2018, 18:37

Или всё-таки что-то другое имелось в виду?

Да, имел ввиду это. Спасибо! Уже почти все, что нужно, сделал.
BARD
beginner
beginner
 
Posts: 11
Joined: 13 Jan 2012, 16:28
LabVIEW Version: 2011
Karma: 0


Return to Работа с графикой и звуком

Who is online

Users browsing this forum: No registered users and 2 guests

cron