Страница 1 из 1

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

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

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

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

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

Добавлено: 14 ноя 2018, 19:00
dadreamer
BARD писал(а):Собственно, получать видео умею, рисовать отдельно прицел и чтобы он перемещался за мышкой умею, а вот сделать статичное отображение прицела поверх видео не могу. Скорее всего, это довольно легко, но у меня закончились идеи.
После просмотра кода у меня только один вопрос - а почему нельзя было использовать инструменты Vision из палитры Overlay, ведь уже используются IMAQdx?..

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

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

Помогите, пожалуйста, хотя бы советом!
Вам нужно сохранить координаты по нажатии на кнопку, я подцепил на нее сейчас клавишу F11, иначе мышку приходится выводить за пределы изображения. Я немного удалил, но для того что бы понять принцип, этого достаточно.
aim on video.vi
(22.29 КБ) 196 скачиваний
ну и по поводу отрисовки крестика, Вам уже написали
получится значительно быстрее и нет необходимости каждый кадр сжимать, писать в файл, читать из файла и преобразовывать в массив
да и сам контрол от Vision шустрее работает

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

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

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

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

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

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

Добавлено: 20 ноя 2018, 18:37
BARD
Или всё-таки что-то другое имелось в виду?
Да, имел ввиду это. Спасибо! Уже почти все, что нужно, сделал.