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

Nuzhny

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

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

  • Посещение

  • Days Won

    176

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

  1. Тренировка каскадов Хаара

    Там используется "метод усиления слабых классификаторов" или boosting. Вектор признаков формируется из значений вейвлетов Хаара. Читать надо начинать именно про boosting.
  2. Тренировка каскадов Хаара

    cvMatchTemplate тебе нужен. Каскады Хаара для такой задачи - это даже не пуша, а ядерная бомба по воробьям.
  3. Распознавание лиц

    Что-то типа такого? Или этого?
  4. Распознавание лиц

    Для того, чтобы Хаар обнаруживал не только фронтальные лица, его надо этому обучить. А это очень непростое и долгое дело. Я бы не взялся. Очень распространённый способ - поиск участков кожи по цвету или текстуре. У найденных областей анализируют форму и считают за лица, если соблюдаются определённые пропорции. Способ ненадёжный, но быстрый. Хотя.. Если все люди будут одной расы, то можно попробовать. Скорее всего потребуется отдельно придумывать эвристики для усатых, бородачей и очкариков. P.S. Пример не напишу - работы явно не на полчаса, а больше свободного времени у меня сейчас нет.
  5. Распознавание лиц

    Вроде как с ними надо списываться, по результатам они могут выдать бесплатную версию на пол года, привязанную к одному компьютеру (и к Винде, и к железу одновременно).
  6. cvSetImageROI/cvResetImageROI - очень медленная пара операций. Память выделилась, скопировалась, изменилась, скопировалась обратно, освободилась.
  7. Распознавание лиц

    Распознавание лиц как для аутентификации или просто поиск лиц на фотографии (выделить прямоугольниками все имеющиеся лица)?
  8. Случайно наткнулся на достаточно новую статью по теме: "REAL-TIME CALIBRATION-FREE AUTONOMOUS EYE TRACKER" Klefenz, Husar, Krenzer, Hess Там подход посложнее рассматривается.
  9. NEW C++ API Reference

    Тоже попробовал C++ API И правда - многого не хватает. Жаль. По поводу падений в дебаге: его надо линковать с OpenCV откомпилированной с теми же отладочными опциями, с которыми ты компилируешь свой exe. Это старый и непобедимый недостаток С++ интерфейсов перед просто С интерфейсами.
  10. OpenCV и видеофайлы

    Эх, мой второй старенький жёсткий с Убунтой накрылся - так и не поставлю её в какое-нибудь новое место. А под Винду я скачивал ffmpeg и за пару часов умудрился прикрутить ffmpeg вручную. Я тут на форуме уже описывал процесс. А под Линуксом не пробовал. Даже не знаю, что посоветовать.
  11. OpenCV и видеофайлы

    Да, надо установить и скомпилировать OpenCV с поддержкой ffmpeg.
  12. Input must be 8uC1 ....

    Матрицей, значит, типа CvMat, созданной с помощью функции cvCreateMat.
  13. Input must be 8uC1 ....

    Выходной параметр должен быть матрицей с типом CV_32FC1 (то есть обычный float). Создай её и подавай вместо img1.
  14. Input must be 8uC1 ....

    При выполнении какой строки появляется ошибка?
  15. Input must be 8uC1 ....

    img = cvLoadImage( OpenDialog1->FileName.c_str() , 0);
  16. Написал и самому стало интересно - будет ли оно работать. Набросал кусочек, попробуй вставить его вместо cvEqualizeHist: unsigned char t = 10; unsigned char T = 20; double k = 0.2; double K = 1.5; for (unsigned char *pbuf = (unsigned char *)bin_img->imageData, *stop = (unsigned char *)(bin_img->imageData + bin_img->imageSize); pbuf < stop; ++pbuf) { if (pbuf[0] < t) { pbuf[0] = (unsigned char)(k * (double)pbuf[0]); } else if (pbuf[0] > T) { pbuf[0] = (unsigned char)std::min(255., K * (double)pbuf[0]); } }
  17. Для лучшего выделения контуров ещё можно усилить контрастность в определённом диапазоне яркостей. Не знаю на счёт OpenCV (есть в Фотошопе), но и самому реализовать довольно просто: 1. если яркость пикселя I[x, y] ниже некоторого нижнего порога t, то I[x, y] = k * I[x, y], где 0 > k < 1; 2. если яркость пикселя I[x, y] выше некоторого верхнего порога T, то I[x, y] = min(255, K * I[x, y]), где 1 > k < 2; 3. 0 < t < T < 255. Подбирая нижний и верхний пороги, а также коэффициенты усиления и ослабления можно добиться неплохого выделения исходного объекта, если тот находится на фоне с другой яркостью.
  18. Окружности можно находить по-разному. Например, так: int main() { IplImage *img = cvLoadImage("d:\\eye.PNG"); IplImage *bin_img = cvCreateImage(cvGetSize(img), 8, 1); cvCvtColor(img, bin_img, CV_RGB2GRAY); cvEqualizeHist(bin_img, bin_img); cvCanny(bin_img, bin_img, 50, 150); CvMemStorage *storage = cvCreateMemStorage(0); CvContourScanner traverse = cvStartFindContours(bin_img, storage, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_NONE); for (CvSeq *contour = cvFindNextContour(traverse); contour; contour = cvFindNextContour(traverse)) { if (contour->total > 6) { CvBox2D box = cvFitEllipse2(contour); CvPoint center = cvPointFrom32f(box.center); CvSize size = cvSize(cvRound(box.size.width * 0.5), cvRound(box.size.height * 0.5)); // Проверка на окружность if ((double)box.size.width / (double)box.size.height > 0.9) cvEllipse(img, center, size, -box.angle, 0, 360, CV_RGB(0, 0, 255), 1, CV_AA, 0); } } cvEndFindContours(&traverse); cvReleaseMemStorage(&storage); cvShowImage("1", img); cvShowImage("2", bin_img); for (; { if (cvWaitKey(10) > 0) break; } cvReleaseImage(&bin_img); cvReleaseImage(&img); return 0; }[/code] В результате есть и ложные сработки, но их можно отфильтровать по "вторичным половым признакам":
  19. Стерео зрение

    Присоединяюсь к вопросу.
  20. Как прикрутить OpenCV к билдеру?

    Да, надо указывать просто /MT. При компиляции /MD программа требует наличия в системе установленных библиотек C++. Ты наверняка встречал случай, когда при установке некоторых программ доставлялась Microsoftf C++ redistributable library. Я полностью перекомпилировал OpenCV, выставляя на всех проектах /MT - компилировалась нормально.
  21. Как прикрутить OpenCV к билдеру?

    Тебе надо скомпилировать cvhaartraining без использования crt dll.
  22. Многопоточность и OpenCV

    Насколько я знаю, в OpenCV не механизма создания и управления потоками.
  23. Что тебе на текущий момент больше подходит, то и выбирай. OpenCV хорошая, но неидеальная библиотека. Ну и никто не запрещает использовать и то, и другое одновременно.
×