Добрый день! Требуется наладить подключение трех ip-камер одновременно с возможностью отдельной обработки каждого из получаемых изображений. Поискав возможные решения на форумах, понял, что просто получать видео очень легко, но вот делать возможность последующей обработки уже намного сложнее. В связи с этим свел задачу хотя бы к тому, чтобы организовать один канал получения информации с трех камер, но подключаться к каждой попеременно для получения актуального изображения (скажем, канал обращается к каждой из камер на 3 секунды, потом переключается на новую). Такое реализовать "с грехом пополам" удалось в приложенной мной программе. Если подключать вывод просто на изображения, то нет проблем, все работает. Если же вместо изображений сделать global переменные и пытаться передать значения в три другие, независимые программы по обработке, то в каждую программу будет передаваться только одно какое-то изображение, и оно меняться не будет (то есть во всех трех программах будет одинаковое изображение с одной камеры вместо трех разных). Также, если отсечь программы по обработке и оставить только global на прием изображений, то они прекрасно работают, в каждою переменную своё изображение доходит, картинка обновляется. Я попробовал создать абсолютно разные global для каждого изображения и из каждого передавать только свою картинку только в свою программу, но результат точно такой же - одинаковая картинка на 3 программы с одной камеры вместо трех разных картинок.
В связи с этим несколько вопросов:
1. Можете ли подсказать, как все-таки сделать так, чтобы внешние программы через global принимали 3 разных картинки? Честно говоря, я не понимаю абсолютно, почему так происходит.
2. Я был бы очень признателен, если бы кто-то показал, как можно сделать три потока сразу с 3-х камер (если это возможно) с возможностью обработки изображения. В labview не то чтобы совсем новичок, но работу с библиотеками, которые в данной программе используются, я не очень понимаю.
3. Пришлось сделать изменения события в event структуре по нажатию клавиши клавиатуры, а нажатие клавиши эмулировать в другом цикле, потому что event структура почему-то не реагирует на изменение величины Ring, остается всегда на нулевом значении и не останавливает цикл. Почему?
4. Возможно многое, что сейчас находится в большом главном цикле можно вынести за его пределы, чтобы увеличить скорость программы и не инициализировать все каждый раз? Я пробовал вынести кое-что вплоть до libvlc_new и GetProcAddress, но labview выдает критическую ошибку, после которой вообще закрывается.
5. Может быть есть другой способ вытаскивания изображения с двух и более ip-камер без применения библиотек vlc? Если да, то может быть кто-то покажет их или подскажет, где посмотреть?
P.S. Все три камеры абсолютно одинаковые, различаются только ip-адреса, в прикрепленном архиве основная программа - "ARPES camera"
Подключение двух (и более) ip-камер и обработка изображения
-
- beginner
- Сообщения: 20
- Зарегистрирован: 13 янв 2012, 16:28
- Версия LabVIEW: 2022
- Благодарил (а): 1 раз
- Контактная информация:
Подключение двух (и более) ip-камер и обработка изображения
- Вложения
-
- 3 ip cameras.rar
- (124.51 КБ) 167 скачиваний
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Подключение двух (и более) ip-камер и обработка изображе
Начните, сначала и добейтесь стабильного получения трех видепотоков от различных камер.
Сейчас столько накручено, что даже вникать не хочется
На данный момент проблема "в том что видео одно и тоже" в том, что все дисплеи (индикаторы) получают информацию из одного места.
Вы выделяете область в памяти и указываете на нее ссылку. А соответственно при отображении на всех индикаторах изображения будут совпадать.
!!! Imaq Image - это ссылка (reference), а не информация
Т.е. для каждой камеры должна быть выделена своя область памяти, а обращаться к одной области данных можно даже из разных !
По этому имя должно быть уникально.
Сейчас столько накручено, что даже вникать не хочется
На данный момент проблема "в том что видео одно и тоже" в том, что все дисплеи (индикаторы) получают информацию из одного места.
Вы выделяете область в памяти и указываете на нее ссылку. А соответственно при отображении на всех индикаторах изображения будут совпадать.
!!! Imaq Image - это ссылка (reference), а не информация
Т.е. для каждой камеры должна быть выделена своя область памяти, а обращаться к одной области данных можно даже из разных !
По этому имя должно быть уникально.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- beginner
- Сообщения: 20
- Зарегистрирован: 13 янв 2012, 16:28
- Версия LabVIEW: 2022
- Благодарил (а): 1 раз
- Контактная информация:
Re: Подключение двух (и более) ip-камер и обработка изображе
Большое Вам спасибо! Уже идет десятый день, как мне срочно нужно решить большую задачу по взаимодействию с видеоданными, и я уже за "деревьями леса не вижу". Да, проблема была в этом. Может быть Вы еще подскажете, как сделать так, чтобы программа работала не только когда открыта ее лицевая панель, но и просто пока была запущена, но, допустим, свернута?На данный момент проблема "в том что видео одно и тоже" в том, что все дисплеи (индикаторы) получают информацию из одного места.
Вы выделяете область в памяти и указываете на нее ссылку.
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Подключение двух (и более) ip-камер и обработка изображе
Открыта или свернута лицевая панель...BARD писал(а):Может быть Вы еще подскажете, как сделать так, чтобы программа работала не только когда открыта ее лицевая панель, но и просто пока была запущена, но, допустим, свернута?
по идее никак не должно сказываться на работу программы.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- beginner
- Сообщения: 20
- Зарегистрирован: 13 янв 2012, 16:28
- Версия LabVIEW: 2022
- Благодарил (а): 1 раз
- Контактная информация:
Re: Подключение двух (и более) ip-камер и обработка изображе
Вы знаете, после того, как осуществил запуск программы из другой, то действительно пропал такой эффект.Открыта или свернута лицевая панель...
по идее никак не должно сказываться на работу программы.
А может быть сможете подсказать еще один момент: сейчас я запускаю параллельно три программы таких, как в первом моем посте, но с разницей в том, что каждая программа передает только одно свое изображение от каждой из камер. Каждое изображение передается в глобальную переменную и далее уже по отдельности обрабатывается тремя различными программами для наложения на каждое из изображений различных рисунков. Если при запуске только двух программ все работает еще более-менее стабильно, то при подключении еще и третей программы начинаются очень большие провисания всего
Имеет ли смысл не делать три параллельные программы для каждой из камер, а сделать все в одной программе или это никак заметно не повлияет в производительности? Может быть даже избавиться от global переменных и вообще все сделать в одной программе, используя вместо них local переменные?
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: Подключение двух (и более) ip-камер и обработка изображе
сам распараллеливает задачи, по этому отдельно Вы запускаете или в теле одной программы будут работать три независимых потока (цикла), разницы наверное большой не будет.BARD писал(а): Вы знаете, после того, как осуществил запуск программы из другой, то действительно пропал такой эффект.
А может быть сможете подсказать еще один момент: сейчас я запускаю параллельно три программы таких, как в первом моем посте, но с разницей в том, что каждая программа передает только одно свое изображение от каждой из камер. Каждое изображение передается в глобальную переменную и далее уже по отдельности обрабатывается тремя различными программами для наложения на каждое из изображений различных рисунков. Если при запуске только двух программ все работает еще более-менее стабильно, то при подключении еще и третей программы начинаются очень большие провисания всего
Имеет ли смысл не делать три параллельные программы для каждой из камер, а сделать все в одной программе или это никак заметно не повлияет в производительности? Может быть даже избавиться от global переменных и вообще все сделать в одной программе, используя вместо них local переменные?
А вот использование глобальной переменной, я бы не рекомендовал. Раньше NI не рекомендовало их использовать для обмена "быстрыми" данными, т.к. один из самых медленных механизмов, плюс там проблемы с многопользовательским доступом из-за блокировок монопольного доступа.
Я бы рекомендовал использовать очереди Queue, их и обрабатывать просто и если не успеваешь обработать, можно очистить (если не критично).
Но самое ресурсозатратное, сама обработка, т.к. любое изображение имеет огромное количество пикселей, например Full HD (1920×1080) более 2мл, а если учесть что там 3 отдельных составляющих... получается, что простейшие операция изменения яркости или контрастности, требуют более 6мл операций.
Возможно получится уменьшить разрешение или перейти к обработке gray изображения, без потери информативности.
Трудно советовать не зная задачи и алгоритма обработки.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение