-
Количество публикаций
3 873 -
Зарегистрирован
-
Посещение
-
Days Won
346
Все публикации пользователя Smorodov
-
Вот тут почитайте статейки, про детектирование прямых: http://www.compvision.ru/forum/index.php?showtopic=31 Непосредственно в этом виде вам он не подходит, но если разберетесь с методом, модифицировать под Вашу задачу труда не составит.
-
Класс для работы со сплайнами, очень полезно для работы с контурами. http://willperone.net/Code/spline.php
-
Для распознавания мимики обычно используют технику AAM или если по-русски активных контуров. Можно почитать здесь:http://research.microsoft.com/en-us/um/people/ablake/contours/ Ну и GOOGLE. PS: Eсть еще неполхая книжка: Handbook of face recognition (можно поробовать стащить на rapidlibrary)
-
Если честно, не замечал этого, все работало , но возможно Вы правы (но я, как нибудь проверю ). ---------------------- Проверил правильно так: int Nc = cvFindContours(************); Nc-кол-во найденных контуров.
-
До этого у меня стоят строчки: for(;contours!=0;contours = contours->h_next) { // Аппр. контуров полигонами result = cvApproxPoly( contours, sizeof(CvContour), storage,CV_POLY_APPROX_DP, cvContourPerimeter(contours)*0.001, 0 ); // Площадь полигона double area=fabs(cvContourArea(result,CV_WHOLE_SEQ)); А полный текст есть на форуме в примере сравнения контуров.
-
// Объявление читалки точек CvSeqReader reader; // Инициализация читалки точек cvStartReadSeq( result, &reader, 0 ); // Две точки CvPoint pt[2]; // Достаем точки из хранилища точек и рисуем линии for (int i=0;i<result->total-1;i++) { CV_READ_SEQ_ELEM( pt[0], reader ); CV_READ_SEQ_ELEM( pt[1], reader ); cvLine(img,pt[0],pt[1],CV_RGB(255,0,0)); }[/code]
-
Посмотрите cvHoughLines и cvHoughCircles, по поводу углов писал выше, придется делать руками.
-
По первому вопросу посмотрите cvRunningAvg, cvSub, cvAbsDiff. Что касается второго - просто там очень много слабо отличающихся контуров, отсейте контуры с примерно одинаковой площадью и центром.
-
Ну так её же не будут таскать с собой постоянно, первые несколько кадров снимаем, усредняем, и потом вычитаем из поступающих картинок. Можно какую нибудь кнопку сделать для этого, или по количеству измененной информации - если некоторое количество кадров (нужно определиться сколько) не отличаются друг от друга, то принять это за фон.
-
Есть один ответ и один вопрос Ответ: На Вашей ссылке в кадре только кайма знака содержит красныйс цвет, дальше думайте сами Вопрос: Зачем в контуре человека находить углы ? ЗЫ: А Вы пытались как-то отделять фон? Кстати, на углах резко уменьшается радиус кривизны контура, и еще если построите график расстояния от центра фигуры до границы, то максимумы и минимумы будут в некоторой степени углами (надо проверять еще значение производной).
-
Тогда так (находит кол-во ненулевых пикселей (вернее их сумму по отношению к размеру изображения см. ключи команды cvReduce) ): CvMat MV, MH; double *VertSumS; double *HorSumS; VertSumS = new double[bw_image->height]; HorSumS = new double[bw_image->width]; cvInitMatHeader(&MV, bw_image->height, 1, CV_64FC1, VertSumS); cvInitMatHeader(&MH, 1, bw_image->width, CV_64FC1, HorSumS); cvReduce(bw_image, &MV, 1, CV_REDUCE_AVG); cvReduce(bw_image, &MH, 0, CV_REDUCE_AVG); // доступ к элементам матриц делается так: double v1 = cvGetReal2D(&MH, 0, i); // по горизонтали double v2 = cvGetReal2D(&MV, i, 0); // по вертикали // Когда они не нужны, можно освободить ресурсы. if(VertSumS) { delete[] VertSumS; } if(HorSumS) { delete[] HorSumS; }
-
Условия задачи недоопределены. Непонятно какие параметры качества надо мерять, с какой точностью. Если диаметр, и если изображение разрешением порядка 640х480, то абсолютную погрешность можно принять 5х10 пикселей, то есть относительная погрешность метода примерно 1.5-2% по диаметру. ЗЫ: Черный кабель может еще блики давать, которые будут мешать.
-
Я думаю можно сделать так: 1) Получить хорошее ч/б изображение кабеля (метод получения ч/б зависит от качества изображения). Это самый трудный этап. 2) При помощи cvReduce получим массив равный длине кабеля в пикселях, найти среднее, это и будет диаметр, отклонение тоже найти не проблема.
-
сначала назначить ROI (область интереса), командой cvSetImageROI, затем скопировать нужный кусок в новое изображение командой cvCopy, дальше заполняем исходный рисунок цветом, или еще что нибудь делаем, и рисуем скопированное обратно ( назначаем ROI, cvCopy, можно еще и по маске копировать).
-
Открытый движок распознавания символов: http://jocr.sourceforge.net/
-
Набрел в сети на проект оболочки под Делфи: http://opencv-delphi.svn.sourceforge.net/v.../opencv-delphi/
-
Странно что не работает, может попробовать сделать три канала? вот так: gray:= cvCreateImage(cvSize_(FImage^.width, FImage^.height), 8, 3); Хотя так не должно быть
-
Набрел на интересный материальчик по теме смешанной реальности и распознавания жестов : http://www.membrana.ru/articles/technic/20.../27/174400.html
-
Судя по всему Вам нужно что-то подобное этому: http://www.youtube.com/results?search_quer...effect&aq=3 Там написано при помощи чего это делается.
-
1) Делается на С++, или С (не обязательно MSVC), при хорошем владении другими языками, можно приспособить и к ним. ARToolkit не более чем одна из библиотек функций, часто используемых в проектах виртуальной реальности. Функции эти сводятся, в основном к определению пространственного положения и ориентации заранее определенных маркеров (например, квадраты с иероглифами). Затем, с использованием этой информации и Вашей фантазии трехмерная картинка совмещается с картинкой, полученной с камеры, размешение трехмерного объекта производится исходя из рассчитанных координат маркеров. 2) Flash к этому неапосредственного отношения не имеет (хотя и может быть использован), прорисовку обычно делают (так проще, и быстродействие выше) как в трехмерных играх, с использованием DirectX или OpenGL. 3) про layar не интересовался. PS: Для изучения теории придется неплохо знать линейную алгебру, и аналитическую геометрию, крючков там очень много.
-
Подключите к проекту статические библиотеки (Lib).
-
Если объект однотонный, cvFloodFill с начальной координатой в центре кадра, дальше работать с маской.
-
Какой то массив (изображение) не создано (загружено). Прогоните в отладке по строчкам, посмотрите на какой строчке выдает ошибку.
-
Тут может подойти функция cvMatchTemplate. Тут она используется в детекторе глаз: http://nashruddin.com/Real_Time_Eye_Tracki...Blink_Detection
-
Протокол CAN примеры для микроконтроллера AVR Can_AVR_RT.zip CAN_example_4_chip45.com.zip