Добрый день! Требуется нарисовать "прицел-плюсик" (как в компьютерных играх) поверх видео, непрерывно получаемого с web-камеры.
Более детально алгоритм задачи выглядит так:
1. Поверх получаемого видео с помощью курсора мышки выставляем наш прицел, который перемещается вместе с курсором по отображаемому видео и по щелчку запоминаем координаты.
2. Если все ок, то по команде (любой) при помощи полученных координат уже автоматически выставляем такой же прицел, но который будет все время отображаться статично на этом месте поверх поступаемого видео, не зависимо от того, что мы делаем мышкой или клавиатурой.
3. При нажатии заданной клавиши статичный прицел нужно убрать и вернуться к пункту 1 и так до бесконечности.
Собственно, получать видео умею, рисовать отдельно прицел и чтобы он перемещался за мышкой умею, а вот сделать статичное отображение прицела поверх видео не могу. Скорее всего, это довольно легко, но у меня закончились идеи.
Помогите, пожалуйста, хотя бы советом!
Рисование фигур поверх получаемого видео.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Рисование фигур поверх получаемого видео.
После просмотра кода у меня только один вопрос - а почему нельзя было использовать инструменты Vision из палитры Overlay, ведь уже используются IMAQdx?..BARD писал(а):Собственно, получать видео умею, рисовать отдельно прицел и чтобы он перемещался за мышкой умею, а вот сделать статичное отображение прицела поверх видео не могу. Скорее всего, это довольно легко, но у меня закончились идеи.
- Вложения
-
- maxresdefault.jpg (39.68 КБ) 4109 просмотров
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: Рисование фигур поверх получаемого видео.
Вам нужно сохранить координаты по нажатии на кнопку, я подцепил на нее сейчас клавишу F11, иначе мышку приходится выводить за пределы изображения. Я немного удалил, но для того что бы понять принцип, этого достаточно. ну и по поводу отрисовки крестика, Вам уже написалиBARD писал(а):Собственно, получать видео умею, рисовать отдельно прицел и чтобы он перемещался за мышкой умею, а вот сделать статичное отображение прицела поверх видео не могу. Скорее всего, это довольно легко, но у меня закончились идеи.
Помогите, пожалуйста, хотя бы советом!
получится значительно быстрее и нет необходимости каждый кадр сжимать, писать в файл, читать из файла и преобразовывать в массив
да и сам контрол от Vision шустрее работает
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- beginner
- Сообщения: 20
- Зарегистрирован: 13 янв 2012, 16:28
- Версия LabVIEW: 2022
- Благодарил (а): 1 раз
- Контактная информация:
Re: Рисование фигур поверх получаемого видео.
Большое спасибо за ответы! Уже решил всё своим способом.
Может быть у imaq тоже есть функция наподобие top-left для получения координат именно изображения? Если да, то был бы очень признателен, если бы Вы показали, где эти команды находятся.
Дело в том, что в дальнейшем я хочу рисовать не только прицелы, но и другие фигуры, более сложные. Также я хочу иметь возможность более прецезионно с помощью контроллеров задавать координаты фигур. В моей случае у рисунка есть индикатор top-left, к которому можно привязать координаты всех фигур. У imaq я не нашел функции получения координат изображения, поэтому либо в imaq использовать только мышку с ее координатами и очень точно выставлять курсор каждый раз, чтобы попасть в нужную точку (мне иногда вплоть до пиксела нужно попадать), либо моей программой, которая медленнее намного, но зато координаты с помощью контроллеров можно легко выставлять.После просмотра кода у меня только один вопрос - а почему нельзя было использовать инструменты Vision из палитры Overlay, ведь уже используются IMAQdx?.
Может быть у imaq тоже есть функция наподобие top-left для получения координат именно изображения? Если да, то был бы очень признателен, если бы Вы показали, где эти команды находятся.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Рисование фигур поверх получаемого видео.
Если под 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 писал(а):Может быть у imaq тоже есть функция наподобие top-left для получения координат именно изображения? Если да, то был бы очень признателен, если бы Вы показали, где эти команды находятся.
Или всё-таки что-то другое имелось в виду?
-
- beginner
- Сообщения: 20
- Зарегистрирован: 13 янв 2012, 16:28
- Версия LabVIEW: 2022
- Благодарил (а): 1 раз
- Контактная информация:
Re: Рисование фигур поверх получаемого видео.
Да, имел ввиду это. Спасибо! Уже почти все, что нужно, сделал.Или всё-таки что-то другое имелось в виду?