Перейти к содержимому
Compvision.ru

Razangann

Пользователи
  • Количество публикаций

    6
  • Зарегистрирован

  • Посещение

Все публикации пользователя Razangann

  1. Всем здравствуйте! Недавно начал изучать opencv. Тестирую производительность, разные методы, даже написал пару своих методов которые в моем случае справляются быстрее чем встроенные. Задумал переходить на новое железо, а именно хочется одноплаточные пк. Купив себе для тестов orange pi pc с процессором cortex a7 4*1.2 ГГЦ собрал библиотеку и начал тестировать. Обработка одного кадра 300*200 занимает 150-200 мс на одном ядре. Этого не достаточно. Хочется прикрутить платку к ip камере и в реальном времени обрабатывать видео. Если частота камеры 20fps, то 1 кадр нужно обрабатывать минимум за 50мс. В Принципе распараллелить на все ядра можно, но хочется оставить запас на другие нужны, ведь получение кадра, доступ по ssh, какие-то дополнительные плюшки потребуют своей производительности... Может кто-то использовал для обработки какое-то интересное железо? На пример dsp платы или плис? Интересна производительность... И второй вопрос, orange pi pc на базе armv7 имеет 32-битную архитектуру, а armv8 уже х64. Будет ли прирост скорости на 64-битной версии? Заранее благодарю:)
  2. Распознавание светодиодов

    Можете дать картинку для примера? Чтобы как-то понять с какой стороны подойти... Вообще я бы сделал срез по красному цвету, потом по интенсивности, поиск контуров и на всякий проверка круги ли получились и сколько их. Если у вас из красного на картинке других источников нет или они тусклее, то проблем нет:)
  3. Железо для real-time обработки видео

    Здравствуйте. Да, ip камеры. Через VideoCapture открываю rtsp поток и получаю кадры. Я распоточил всю обработку. У меня на каждую камеру ( 1 поток на получение кадра и складывание его в ConcurrentQueue библиотеки TBB + 1 поток на получение кадра из очереди и его обработку) дополнительно я сделал динамическую задержку между обработкой, чтобы зря не проверять есть ли кадр в очереди. На пример, в конце бесконечного цикла while, который обрабатывает кадры, стоит sleep(t). t задано 1мс. Дальше, когда проверяется есть ли кадр в очереди - если нет или их количество маленькое(<5), то увеличиваем задержку +1мс. Иначе уменьшаем задержку -1мс. В итоге программа в холостую не грузит проц, а сама подбирает нужный ей ритм:) Плюс у вас какая частота проца? Может дело в том что на моём i3 3.6ггц? Ребята, тут прорыв необъяснимый, приехал я домой, у меня отвалился интернет, ни в какую не хочет работать ни с dhcp, ни со статик адресом, пингует роутер, но доступ до интернета не даём. Именно с домашним роутером, по этому я начал переустанавливать разные системы, Lubuntu, Armbian, Ubuntu Mint, везде один результат. Вернулся на Armbian, пошел на работу, там к другому роутеру подрубился и интернет залетал сразу же. Но благодаря это поломки обнаружил следующее: заново скомпилил opencv, запустил свой проект и...о боже! Задержка на обработку снизилась в 10 раз! Если когда я писал тему требовалось 150+ мс, то сейчас тот же самый код отрабатывает за 10+ мс! Как такое могло произойти? Догадки следующие: 1) Флешка. В процессе пробования разных OS менялись флешки. Но думаю вариант не логичный, программа только при старте грузит кадр для обработки и остальное время он висит в оперативе. 2) Система. Не помню какая была версия Armbian до, но по датам выхода и когда я её ставил вроде бы та же... Может в процессе установки был косяк в прошлый раз. Хотя опять таки вопрос, если программа не взаимодействует с файлами то почему же.... 3) Версия opencv. Раньше была с гита скомпилина версия 3.2, сейчас подтянулась свежая 3.3. Может быть в новой версии прилично так поработали над скоростью?:) В общем новости прекрасные, буду сидеть улучшать алгоритм, есть пару мыслей оптимизации, которые перепишут оставшиеся части opencv и можно будет от него оставить VideoCapture, а затем и вовсе отказаться...:) Всем добра и хороших результатов!:) Если кому нужна какая-то информация, пишите, буду рад помочь:) roma.fantom@mail.ru
  4. Железо для real-time обработки видео

    Спасибо за краткое описание систем:) На счет GPU, еще не пробовал, думаю можно сделать пару тестов. По поводу ПК c i3, у меня сейчас такое реализовано, i3-4160(3.6ГГЦ) тащит 12 камер и тратит всего 6-8% цп. Идея была в разделении обработки каждой камеры отдельным модулем. К одному такому ПК можно подключить и 80 камер, но там уже будет проблема с кабелями, свичами и тд... В идеале думал микрокомпьютер на одну камеру, к нему wifi модуль, обрабатывать само видео на микропк и слать по сети уже готовые данные по wifi. Что на счет одноплатных от intel? Intel N2930 или какой-нибудь Atom?
  5. Железо для real-time обработки видео

    Про NEON пока не слышал, почитаю, спасибо:) Алгоритм по сути не сложный, собственная реализация threshold + morphologyEX, но вместо морфологии придумал свою реализацию, пускаю лучи с центра объекта и обрабатываю столкновения, считаю углы между точками Оптимизировать можно, но судя по замерам, то одна функция cvtColor() уже требует 8-10мс... На orange pi pc есть еще графический проц, можно подумать разделить участки обработки и выполнять часть кода на gpu, но даже не знаю есть ли смысл...:) Мне как-то говорили что проц работает быстрее с целочисленными, значит есть смысл минимизировать float переменные? Или в моем случае это тоже бессмысленно?:) Вообще, если у кого-то есть свободное время и желание, могу показать код, может поможете в реализации:)
  6. Железо для real-time обработки видео

    Спасибо, но к сожалению это слишком дорогое решение...может есть что дешевле? В пределах до 5 тыс на пример?:)
×