ArtemBogatov
-
Количество публикаций
8 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные пользователем ArtemBogatov
-
-
Добрый день. Возник вопрос, какие типы дефектов контуров бывают и как их оценивать. В первую очередь интересуют такие типы дефектов как размытость границ, неравномерность амплитуды в разных точках контура, и т.д.
-
Попробуйте оптический поток. Лукаса-Канаде или Фарнебека. Если кроме тряски у Вас нет никакого движения на видео, то просто вычисляете среднее смещение ключевых точек (в случае разреженного оп) или пикселей (в случае плотного оп). А потом по серии кадров вычисляете максимум.
Ещё можете посмотреть варианты в исходниках OpenCV в модуле стабилизации видео ( PyrLkRobustMotionEstimator, например )
-
Посмотрите вот эту ссылку:Подскажите методы сопровождения людей в кадре.
В кадре очень много движущихся объектов (не людей) поэтому вычитания фона не подходит. Использую SVM-HOG из примеров им нахожу людей и нужно сопоставить их в разных кадрах. Пробовал SURF вроди как работает но часто сбивается видимо из-за движения людей и изменения фона и вообще картина не очень качественная. также люди часто пресекаются и пропадают из виду. Вопрос быстродействия не критичен можно хоть 0,1сек потратить на это, также есть GPU.
http://www.robots.ox.ac.uk/ActiveVision/Publications/benfold_reid_cvpr2011/benfold_reid_cvpr2011.html, как раз Ваша задача.
Ещё посмотрите пример blobtrack из примеров OpenCV, там используется фильтр частиц (Particle Filter) для разруливания коллизий (столкновения объектов заслон одного другим и т.д.)
-
Наверное вопрос совсем наивный, но хочется понять в каком направлении двигаться. Мне нужно определять координаты (x,y) небольшого предмета относительно плоскости стены. Собираюсь для этого opencv использовать, хотя опыта нет. Как лучше это сделать? Какой использовать алгоритм? Я разместил на предмете светодиод и попробовал CamShift'ом его отслеживать, работает быстро, но иногда ошибается. Светодиод из-за того, что возможно понадобиться отслеживать в условиях плохой освещенности. Предмет будет двигаться относительно стены плавно и медленно. Буду рад любым рекомендациям. К примеру, лучше использовать диод или диодную ленту, имеет ли значение цвет свечения?
Для алгоритма CamShift цвет имеет принципиальное значение. Если на фоне есть объекты с похожей гистограммой, алгоритм может ошибаться.
Если объект, за которым Вы хотите следить имеет особенности (углы, выраженные границы, перепады яркости), то Вам скорее всего поможет детектор ключевых точек (GoodFeatureToTrack, FastFeatureDetector и т.п) и разреженный оптический поток Лукаса-Канаде (PyrOpticalFlowLK). Пример реализации можно найти в папке opencv\samples\cpp\lkdemo.cpp.
Судя по тому, что объект движется медленно и плавно, Вам, возможно, стоит ещё посмотреть в сторону шаблонов движения. Пример реализации в opencv\samples\c\motempl.c. Где-то на форуме Smorodov выкладывал статью на русском с теорией по шаблонам движения.
- 2
-
int SampleImgHeight = 1000; int SampleImgWidth = 1000; Mat img= Mat::zeros( Size( SampleImgWidth, SampleImgHeight ), CV_8UC3 );
Access violation reading location
почему нельзя так делать в самом начале программы? т.е. там где предположительно глобальные переменные.
Такая ошибка могла возникнуть если, например, у Вас есть ещё одна статическая переменная в другом файле, зависящая от этой, т.к. по стандарту инициализация должна произойти до их использования, но порядок инициализации не определён.
Если у Вас причина в этом, а статические переменные всё равно хочется использовать, есть пара вариантов как это сделать.
-
ArtemBogatov
Только больше ошибок вылезло.
Посмотрите здесь: http://robocraft.ru/blog/computervision/460.html . Последний пример ─ то, что Вам нужно. Если OpenCV опять начнёт сопротивляться, приведите текст ошибок ─ попробую помочь.
-
Изображения загружаются, размеры тоже в порядке. Замена строки вызвавшей смущение на "IplImage* img2 = cvCreateImage( cvGetSize(img), img->depth, 1 );" ничего не изменило.
Нужно так:
IplImage* img2 = cvCreateImage( cvGetSize(img), CV_32F, 1 );
Сравнение объектов контурным анализом.
в Обсуждение общих вопросов
Опубликовано · Report reply
В контрибах OpenCV реализовано сравнение контуров на основе дескрипторов Фурье. Вот ссылка на пример использования https://github.com/opencv/opencv_contrib/blob/master/modules/ximgproc/samples/fourier_descriptors_demo.cpp