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

Smorodov

Главные администраторы
  • Количество публикаций

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

  • Посещение

  • Days Won

    346

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

  1. Работа с контурами

    Вот тут почитайте статейки, про детектирование прямых: http://www.compvision.ru/forum/index.php?showtopic=31 Непосредственно в этом виде вам он не подходит, но если разберетесь с методом, модифицировать под Вашу задачу труда не составит.
  2. Работа с контурами

    Класс для работы со сплайнами, очень полезно для работы с контурами. http://willperone.net/Code/spline.php
  3. Для распознавания мимики обычно используют технику AAM или если по-русски активных контуров. Можно почитать здесь:http://research.microsoft.com/en-us/um/people/ablake/contours/ Ну и GOOGLE. PS: Eсть еще неполхая книжка: Handbook of face recognition (можно поробовать стащить на rapidlibrary)
  4. Работа с контурами

    Если честно, не замечал этого, все работало , но возможно Вы правы (но я, как нибудь проверю ). ---------------------- Проверил правильно так: int Nc = cvFindContours(************); Nc-кол-во найденных контуров.
  5. Работа с контурами

    До этого у меня стоят строчки: 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)); А полный текст есть на форуме в примере сравнения контуров.
  6. Работа с контурами

    // Объявление читалки точек 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]
  7. Работа с контурами

    Посмотрите cvHoughLines и cvHoughCircles, по поводу углов писал выше, придется делать руками.
  8. Работа с контурами

    По первому вопросу посмотрите cvRunningAvg, cvSub, cvAbsDiff. Что касается второго - просто там очень много слабо отличающихся контуров, отсейте контуры с примерно одинаковой площадью и центром.
  9. Работа с контурами

    Ну так её же не будут таскать с собой постоянно, первые несколько кадров снимаем, усредняем, и потом вычитаем из поступающих картинок. Можно какую нибудь кнопку сделать для этого, или по количеству измененной информации - если некоторое количество кадров (нужно определиться сколько) не отличаются друг от друга, то принять это за фон.
  10. Работа с контурами

    Есть один ответ и один вопрос Ответ: На Вашей ссылке в кадре только кайма знака содержит красныйс цвет, дальше думайте сами Вопрос: Зачем в контуре человека находить углы ? ЗЫ: А Вы пытались как-то отделять фон? Кстати, на углах резко уменьшается радиус кривизны контура, и еще если построите график расстояния от центра фигуры до границы, то максимумы и минимумы будут в некоторой степени углами (надо проверять еще значение производной).
  11. Тогда так (находит кол-во ненулевых пикселей (вернее их сумму по отношению к размеру изображения см. ключи команды 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; }
  12. Условия задачи недоопределены. Непонятно какие параметры качества надо мерять, с какой точностью. Если диаметр, и если изображение разрешением порядка 640х480, то абсолютную погрешность можно принять 5х10 пикселей, то есть относительная погрешность метода примерно 1.5-2% по диаметру. ЗЫ: Черный кабель может еще блики давать, которые будут мешать.
  13. Я думаю можно сделать так: 1) Получить хорошее ч/б изображение кабеля (метод получения ч/б зависит от качества изображения). Это самый трудный этап. 2) При помощи cvReduce получим массив равный длине кабеля в пикселях, найти среднее, это и будет диаметр, отклонение тоже найти не проблема.
  14. сначала назначить ROI (область интереса), командой cvSetImageROI, затем скопировать нужный кусок в новое изображение командой cvCopy, дальше заполняем исходный рисунок цветом, или еще что нибудь делаем, и рисуем скопированное обратно ( назначаем ROI, cvCopy, можно еще и по маске копировать).
  15. Открытый движок распознавания символов: http://jocr.sourceforge.net/
  16. Как прикрутить OpenCV к билдеру?

    Набрел в сети на проект оболочки под Делфи: http://opencv-delphi.svn.sourceforge.net/v.../opencv-delphi/
  17. cvCvtColor

    Странно что не работает, может попробовать сделать три канала? вот так: gray:= cvCreateImage(cvSize_(FImage^.width, FImage^.height), 8, 3); Хотя так не должно быть
  18. Набрел на интересный материальчик по теме смешанной реальности и распознавания жестов : http://www.membrana.ru/articles/technic/20.../27/174400.html
  19. Судя по всему Вам нужно что-то подобное этому: http://www.youtube.com/results?search_quer...effect&aq=3 Там написано при помощи чего это делается.
  20. 1) Делается на С++, или С (не обязательно MSVC), при хорошем владении другими языками, можно приспособить и к ним. ARToolkit не более чем одна из библиотек функций, часто используемых в проектах виртуальной реальности. Функции эти сводятся, в основном к определению пространственного положения и ориентации заранее определенных маркеров (например, квадраты с иероглифами). Затем, с использованием этой информации и Вашей фантазии трехмерная картинка совмещается с картинкой, полученной с камеры, размешение трехмерного объекта производится исходя из рассчитанных координат маркеров. 2) Flash к этому неапосредственного отношения не имеет (хотя и может быть использован), прорисовку обычно делают (так проще, и быстродействие выше) как в трехмерных играх, с использованием DirectX или OpenGL. 3) про layar не интересовался. PS: Для изучения теории придется неплохо знать линейную алгебру, и аналитическую геометрию, крючков там очень много.
  21. изучение OpenCV

    Подключите к проекту статические библиотеки (Lib).
  22. Работа с контурами

    Если объект однотонный, cvFloodFill с начальной координатой в центре кадра, дальше работать с маской.
  23. Какой то массив (изображение) не создано (загружено). Прогоните в отладке по строчкам, посмотрите на какой строчке выдает ошибку.
  24. Тут может подойти функция cvMatchTemplate. Тут она используется в детекторе глаз: http://nashruddin.com/Real_Time_Eye_Tracki...Blink_Detection
  25. Протокол CAN примеры для микроконтроллера AVR Can_AVR_RT.zip CAN_example_4_chip45.com.zip
×