Отражение по горизонтали видеопотока с web камеры
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Отражение по горизонтали видеопотока с web камеры
Добрый день!
У меня есть хитрая камера от микроскопа, которая очень крутая, но изображение гонит "отраженное" по горизонтали.
Как это выглядит, видно на приложенном принтскрине. Да, на бумажке должно отображаться "лента".
Есть ли какой-то простой способ в Vision and Motion отразить видеопоток по горизонтали... возможно как-то через ROI можно сделать?
Спасибо большое за помощь, сам нагуглить и сообразить что-то не смог пока...
У меня есть хитрая камера от микроскопа, которая очень крутая, но изображение гонит "отраженное" по горизонтали.
Как это выглядит, видно на приложенном принтскрине. Да, на бумажке должно отображаться "лента".
Есть ли какой-то простой способ в Vision and Motion отразить видеопоток по горизонтали... возможно как-то через ROI можно сделать?
Спасибо большое за помощь, сам нагуглить и сообразить что-то не смог пока...
- Вложения
-
- PLD_cam_logger.vi
- (45.04 КБ) 154 скачивания
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Отражение по горизонтали видеопотока с web камеры
IMAQ Symmetry VI w/ Type of Symmetry = Vertical
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Re: Отражение по горизонтали видеопотока с web камеры
Круто! Только у меня Labview 2012 + IMAQ 2012... и там вроде как такого нет.
Но я понял в какую сторону смотреть, спасибо!
Но я понял в какую сторону смотреть, спасибо!
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Отражение по горизонтали видеопотока с web камеры
Функция довольно старая, ещё в 2009-м Вижене была. Наверно, надо IMAQdx поставить, тогда появится. Ну, или можно картинку перегнать в массив, развернуть массив построчно и перегнать его обратно в картинку.Andrey Petrzhik писал(а):Только у меня Labview 2012 + IMAQ 2012... и там вроде как такого нет.
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Re: Отражение по горизонтали видеопотока с web камеры
Странно, но такой функции у меня нет. Установлена Labview 12 и "NI Vision Acquisition Software August 2012", содержащий Ni IMAQdx 4.0.
Но фиг с ним. Перегоняю картинку в массив, потом кручу массив как вот тут: http://www.labview.ru/forum/viewtopic.php?p=16486 , и его опять в картинку. Но не работает - вылетает ошибка "Invalid image type". Что же не так?..
Но фиг с ним. Перегоняю картинку в массив, потом кручу массив как вот тут: http://www.labview.ru/forum/viewtopic.php?p=16486 , и его опять в картинку. Но не работает - вылетает ошибка "Invalid image type". Что же не так?..
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Отражение по горизонтали видеопотока с web камеры
Если с чёрно-белой картинкой работаете, то брать надо выход Grayscale (U8), а не Float. Если же хотите с цветной RGB (U32) работать, то поменять надо формат у IMAQ Create, и далее пользовать ColorImageToArray / ArrayToColorImage. Ещё одну странность заметил - на IMAQ Create подаётся ссылка, а не строка, не знаю, насколько это будет критично в дальнейшем, но чтобы избежать багов, лучше присвоить картинке собственное уникальное имя.Andrey Petrzhik писал(а):Но не работает - вылетает ошибка "Invalid image type". Что же не так?..
Далее, операция разворота 2D-массива в принципе уже реализована. В пакете OpenG есть Reverse 2D Array, который выполняет это: Можно воспользоваться кодом (вариант "By Columns") или поставить тулкит.
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Re: Отражение по горизонтали видеопотока с web камеры
Ура, получилось! Ничего дополнительно не устанавливал. Кому интересно, файлик приложен. Вертит/отражает видеопоток с usb камер.
- Вложения
-
- PLD_cam_logger.vi
- (55.48 КБ) 159 скачиваний
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: Отражение по горизонтали видеопотока с web камеры
Рад, что получилось.
А теперь - классика.
Caveats and Recommendations when Using Events in LabVIEW
Цикл While внутрь Эвент структуры помещать крайне не рекомендуется. Но! Следует Эвент структуру поместить в цикл While. А получение данных с камеры вынести вообще в отдельный цикл. Дело в том, что сейчас при текущей архитектуре событие нажатия кнопки Start обрабатывается однократно, а все последующие нажатия не могут быть обработаны, т.к. Эвент структура уже отработала и некому её перезапустить. В цикле While она бы крутилась постоянно и всегда могла бы обработать нажатия кнопок и прочее. Кроме того, запуская внутри Эвента цикл, мы не даём структуре возможность обработать прочие события, если они происходят, т.к. нужно ждать, пока отработает внутренний цикл. Стандартный подход - это выделять на все UI-события отдельный цикл с Эвент структурой, а всё остальное (работа с железом, логика, мат. операции) выполнять в каких-то других циклах. Посмотрите, например, шаблон State Machine / Автомат состояний, шаблон Producer-Consumer (Производитель-Потребитель) и т.д.
А теперь - классика.
Caveats and Recommendations when Using Events in LabVIEW
Цикл While внутрь Эвент структуры помещать крайне не рекомендуется. Но! Следует Эвент структуру поместить в цикл While. А получение данных с камеры вынести вообще в отдельный цикл. Дело в том, что сейчас при текущей архитектуре событие нажатия кнопки Start обрабатывается однократно, а все последующие нажатия не могут быть обработаны, т.к. Эвент структура уже отработала и некому её перезапустить. В цикле While она бы крутилась постоянно и всегда могла бы обработать нажатия кнопок и прочее. Кроме того, запуская внутри Эвента цикл, мы не даём структуре возможность обработать прочие события, если они происходят, т.к. нужно ждать, пока отработает внутренний цикл. Стандартный подход - это выделять на все UI-события отдельный цикл с Эвент структурой, а всё остальное (работа с железом, логика, мат. операции) выполнять в каких-то других циклах. Посмотрите, например, шаблон State Machine / Автомат состояний, шаблон Producer-Consumer (Производитель-Потребитель) и т.д.
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Re: Отражение по горизонтали видеопотока с web камеры
Всем привет. Появилась минутка, переделал предыдущий вариант. Вроде покрасивее стало... Поругайте кому не лень что не так пожалуйста. Завтра буду тестить на производстве, где есть одна вредная нестандартная камера, которая отваливалась работая с предыдущей программкой, обычно раз в 3-4 часа...
- Вложения
-
- PLD_camera.vi
- (64.68 КБ) 150 скачиваний
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Re: Отражение по горизонтали видеопотока с web камеры
Отваливается всё равно:( Причём сама-то программка не виснет. Стоп-Старт и всё работает.
Как бы так научиться пинговать меняется/не меняется картинка, и если нет, закрывать/открывать сессию?..
Как бы так научиться пинговать меняется/не меняется картинка, и если нет, закрывать/открывать сессию?..
-
- professor
- Сообщения: 3403
- Зарегистрирован: 31 июл 2011, 23:05
- Награды: 2
- Версия LabVIEW: 12-18
- Благодарил (а): 49 раз
- Поблагодарили: 172 раза
- Контактная информация:
Re: Отражение по горизонтали видеопотока с web камеры
Простое "=" массивов не проккатит?
Если каринка реальная, то всё равно небольшой дребезг цветов есть, а полное равенство очень подозрительно
Если каринка реальная, то всё равно небольшой дребезг цветов есть, а полное равенство очень подозрительно
-
- user
- Сообщения: 81
- Зарегистрирован: 17 ноя 2015, 11:57
- Версия LabVIEW: 12
- Благодарил (а): 4 раза
- Контактная информация:
Re: Отражение по горизонтали видеопотока с web камеры
Артём, в принципе я думал так сделать, но получается что когда темно (нет процесса в снимаемой камере), то картинка как была чёрная, так и есть чёрная. Но наверное можно попробовать... вдруг какая-то разница таки обнаружится...
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Отражение по горизонтали видеопотока с web камеры
Артем правильно говорит, сейчас в основном все алгоритмы адаптивные, может получиться так, что даже если Вы одну и туже картинку прогоните через компрессию/декомпрессию, то результат будет отличаться.Andrey Petrzhik писал(а):Отваливается всё равно:( Причём сама-то программка не виснет. Стоп-Старт и всё работает.
Как бы так научиться пинговать меняется/не меняется картинка, и если нет, закрывать/открывать сессию?..
Что касается сравнения кадров между собой....
Можете поиграться: http://www.ni.com/example/30554/en/
Для сравнения картинок можно использовать "интегральную дифференциальную яркость". Т.е. вы сначала вычисляете разницу между кадрами, потом модуль, затем сумму всех значений.
Потом в результате экспериментов получите порог принятия решения, до какого значения считать кадры равными, после которого - различными.
Только если Вы будите работать с RGB, то нужно отдельно каждую компоненту обрабатывать. По этому рекомендую либо взять самую информационную часть R, либо преобразовать предварительно в серое.
Последовательно идущие кадры должны отличаться между собой несильно, по этому рекомендую в буфере хранить например кадр 10 секундной давности. При 25fps это -250.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение