Комментарии 33
Возможно ли такое решение каким то образом использовать для захвата движения в стиле MoCap?
0
Если в кадр попадёт что-то, совпадающее с цветом лимона (рубашка, обои, ...), то будут ошибки?
0
Да, здесь нужна дополнительная обработка, например по контуру.
0
НЛО прилетело и опубликовало эту надпись здесь
Можете даже и не читать. Обработка по контурам сводится в практических приложениях к примитивным 3х3-фильтрам-дифференциаторам типа Собеля или Канни, которые только увеличивают шум (как и положено ВЧ-фильтрам) и выдают такую кашу, что в ней даже человек часто ни черта понять не может (что уж говорить про машину!). Фактически, контурная обработка даёт какие-то более-менее вменяемые результаты при дикой контрастности фона и предмета (например, самолёт в небе, тёмные детали на светлом фоне и т.д.). А реально все пользуются гистограмно-пороговыми методами с последующими рекурсивными уточнениями контуров (методы этих уточнений, как правило, и являются основным «ноу-хау» таких алгоритмов).
0
На самом деле очень плохой тон — кидать куски кода с минимальными комментариями и выдавать это за статью. Простите.
+10
Освещение влияет очень на такой способ.
А, так и где, собственно, лимон? Я увидел только карту попадания в пределы цветов. А координат лимона не нашел.
А, так и где, собственно, лимон? Я увидел только карту попадания в пределы цветов. А координат лимона не нашел.
+4
А можете про вот такое распознавание написать статью: www.youtube.com/watch?v=6lZ9rSZwDzE#t=177?
Я так думаю тут есть заготовленная база деталей для сравнения и что-то вроде coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html
Я так думаю тут есть заготовленная база деталей для сравнения и что-то вроде coding-robin.de/2013/07/22/train-your-own-opencv-haar-classifier.html
0
Я прошу прощения, а для диких людей вроде меня можно уточнить язык (вроде C++) и то, чем собрать это в исполняемый файл в Linux? Я врач, но мне это актуально весьма в экспериментальной работе. Я бы потыкал мануалы.
+4
Похоже на C++, собирать, видимо, g++.
0
Да язык C++, компилятор g++.
Здесь как собрать OpenCV под Linux
Здесь как собрать OpenCV под Linux
0
Пипетку реализуйте. А бегунки — это уже подстройка будет.
0
Собственно мне когда-то нужна была именно HSV пипетка для быстрого определения верхних и нижних границ HSV в функции inRange. Реализовано на python, но используется OpenCV, поэтому должно легко перекладывается на C++
0
И с пипеткой можно ещебольше улучшить распознавание. Сейчас 6 ползунками вы фактически ограничивается параллелепипед в цветовом пространстве. Пипеткой можно брать несколько точек и строить произвольный объем. Правда, проверка вхождения точки в этот объем усложнится.
+1
На самом деле не очень усложнится. Посмотрите на фукнцию cv::calcBackProject и пример её использования.
+1
Занятно. Использовал такой же способ для поиска потерянного квадрокоптера на видео с GoPro. (C++, Qt)
blog.kopterovod.ru/kompyuternoe-zrenie-na-quadrocopter/
Мне удобнее было использовать пипетку + подстройку руками.
blog.kopterovod.ru/kompyuternoe-zrenie-na-quadrocopter/
Мне удобнее было использовать пипетку + подстройку руками.
0
Ни фига себе он у вас из каши объекты находит…
0
Ну, приходилось очень точно подбирать интервалы поиска цвета. Фактически на это ушло примерно столько же времени, сколько на написание самой программки :-)
0
Ну, дружище, а что мешает построить 4х-мерную гистограмму цвета и найти на ней выбросы. Ибо что бы найти ярко-ядовито-зелёные лопасти на почти сером фоне долго пороги двигать, ну извините… А как бы вы тогда, простите, решали бы задачу летом? А ведь с таким цветом лопастей, поверьте, она решаема! Вам бы игра в пороги бы вообще не помогла!
0
Во как надо кармадрочерством заниматься: всякие хеллоуворлды никому не нужные штамповать!
+1
Как-то пытался по сходному алгоритму детектировать по цвету униформы персонал (магазины) на видео. В целом результат получился не совсем удовлетворительным. Основные проблемы: 1) Внешнее освещение сильно влияет на цвет объекта. Тон (hue) объекта вариабелен меньше всего, но тоже существенно. 2) При сегментации объекта возможны ошибки с выделением его границ. 3) В объекте, особенно при виде сверху, видна не только униформа, но и волосы, кожа и другая одежда — что дополнительно осложняет анализ.
Из полезного от того проекта осталось разве что функция быстрого получения Hue компоненты пространства (HSV) из YUV420p. Реализация, если что здесь.
Из полезного от того проекта осталось разве что функция быстрого получения Hue компоненты пространства (HSV) из YUV420p. Реализация, если что здесь.
+1
Ну и результат получился убогим до невозможности. Очевидно, что контрастный жёлтый лимон на фото должен выделяться в лёт. А ваш алгоритм изуродовал бедный лимончик почти до неузнаваемости. Да, область его нахождения (плюс-минус километр) он выделил и даже связность каким-то чудом сохранил, только вот если его дальше распознавать потребуется (например, тип фрукта), то даже человек вряд ли поймет, что изображено в окне «Threshold». Просто цвет не распознают глобально-пороговым методом, иначе получится результат как у вас. Цветовое разделение делается местно-рекурсивным способом с поиском сначала местных границ гистограммно-медианным способом (этот метод официально носит имя какого-то японца, но я его даже запоминать нехочу), а затем уже принимают решение о границе объекта по совокупности обнаруженных местных границ. И вот такой способ работает. По-крайней мере при выделении дорожных знаков (коим я занимаюсь) он «вытаскивает» даже в хлам выцветшие знаки при никаком освещении :)
0
Я OpenCV изучать начал совсем недавно. Ясное дело я еще очень многого не знаю. Плюс вся нормальная информация на англ. языке, а с ним у меня не настолько все хорошо. Поэтому буду как-то крутиться, может скоро и смогу сложные алгоритмы применять.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Простое обнаружение объектов по цвету