Jump to content
Compvision.ru

al072

Пользователи
  • Content count

    52
  • Joined

  • Last visited

  • Days Won

    1

al072 last won the day on February 14 2016

al072 had the most liked content!

Community Reputation

1 Новичек

About al072

  • Rank
    Эксперт
  1. Спасибо господа! Понял куда нужно копать
  2. Добрый день! Подскажите пожалуйста как лучше реализовать обнаружение нескольких различных предметов на одном изображении? мы используем классификатор обнаружения лица "lbpcascade_frontalface.xml" и умеем обнаруживать лицо на изображении, и допустим у нас есть еще несколько различных классификаторов "собаки.xml", "кошки.xml", "сигареты.xml" и т.д. как можно реализовать обнаружение всех этих классификаторов на одном изображении одновременно ? какой алгоритм или подход лучше использовать? Программу реализуем на opencv 2.4.1 (C++) заранее большое спасибо всем кто откликнется.
  3. Analog video capture device

    Уважаемые форумчане! Откликнитесь плиз! Может не понятна суть вопроса?
  4. Analog video capture device

    Доброго времени суток! Господа прошу помочь выбрать устройство для преобразования аналогового видеосигнала в цифровой для использования в проекте opencv. Рассматриваю вот это устройство: http://s.aliexpress.com/ZZFnYvu6 Но судя по информации в интернете и на форуме opencv никому так и не удалось подружить этот граббер с opencv. Если кто-нибудь сталкивался с подобной задачей поделитесь опытом плиз.
  5. HBitmap to cvMat

    Добрый день! Спасибо за пример кода. Подскажите пожалуйста какой HDC нужно передавать в функцию и как его создать?
  6. Я это понимаю, просто нужна помощь в синхронизации потоков и совет по оптимизации обработки изображения. Также пока не понятно необходимо ли реализовывать очередь и поможет ли она ускорить процесс распознавания?
  7. Я бы с радостью загнал все в один поток и радовался жизни, но вот только не знаю каким образом оптимизировать самую прожерливую функцию которая обрабатывает входное изображение (как я ранее писал она занимает порядка 45 миллисекунд). Пробовал оборачивать эту функцию в #pragma omp parallel, но результатов это не дало только стало еще хуже.. Можете помочь с примером кода или чуть подробней расписать как реализовать очереди кадров? Если я правильно понял из ваших комментариев, то мне необходимо два потока, в одном потоке я получаю изображения с камеры и запихиваю их в очередь изображений и в этом же потоке я должен создать очередь для вывода изображений: 1) как сделать очередь изображений и очередь вывода и есть ли в этом смысл? Если функция proccessFrame в любом случае занимает не менее 45 миллисекунд, то следовательно очередь вывода будет пополняться не ранее чем через 45 миллисекунд. То есть никакой оптимизации по времени мы не получим правильно? 2) куда расставлять mutex? 3) как синхронизировать потоки? Извиняюсь за кучу вопросов, с потоками вообще раньше не работал.. Для реализации потоков прикрутил boost к проекту.
  8. Господа, подскажите плиз как правильнее реализовать работу потоков и оптимизировать работу программы. Имеется 4 основных процесса: 1) Получение изображения с камеры (занимает 2-3 миллисекунды); Полученное изображение записывается в cv::Mat Frame; 2) Обработка изображения (занимает 45 миллисекунд); Обработанное изображение записывается в cv::Mat processedFrame; 3) Распознавание занимает (от 5 - 40 миллисекунд в зависимости от колличества лиц и меток в базисе); 4) Вывод изображения на форму занимает (2 миллисекунды). Если запускать все четыре процесса паралленьно каждый в своем потоке, то получается что возникает необходимость синхронизировать 1,2,3,4 потоки последовательно, и смысл в многопоточности теряется. То есть пока не завершен 1 процесс получения кадра, нет смысла запускать 2 процесс обработки этого кадра, пока кадр не обработан, нет смысла выполнять функцию 3 распознавания и соответственно выводить изображение на форму 4. Подскажите каким образом можно оптимизировать работу потоков и как добиться сокращения времени работы цикла начиная от получения изображения до вывода его на форму? То есть изначально все четыре процесса 1,2,3,4 я запускал в одном потоке и это занимало 50-150 миллисекунд в зависимости от количества лиц и меток. Сейчас я запускаю эти 4 процесса каждый в своем потоке, но скорость вывода изображения на форму от этого не меняется, более того появляется еще больше геморроя с синхронизацией работы потоков..
  9. http://stackoverflow.com/questions/19857263/how-to-activate-c11-standard-in-visual-studio-2010 https://habrahabr.ru/post/173639/ Пишут что C++11 частично реализован в VS2010, и согласно таблицы сравнения версий. thread поддерживается начиная с 2012/2013. Вообщем boost мне в руки))
  10. Тестировал Eigen,Fisher, LBPH на 10 людях (по 30 лиц на каждого). Пробовал разные настройки threshold, при различной освещенностью, самый стабильный результат определения добился с помощью LPBH. А у вас какие результаты? какими алгоритмами пользуетесь? Я использую VS2010, #include <thread> такого хидера я не нашел, если я правильно понимаю то std::thread в VS2010 не доступен? То есть данная библиотека доступна начиная с VS2012 (поправьте если я не прав). Посмотрел код по ссылке на stackoverflow, думаю что-то подобное мне и нужно. Для того чтобы не было тормозов необходимо обрабатывать загрузку фреймов, обработку и определение в разных threads. То есть я так понимаю нужен threads pool который должен параллельно запускать 3 threads и синхронизировать их работу. Пытался реализовать этот механизм с помощью DWORD WINAPI, но не хватает познаний в многопоточном программировании. С boost раньше не работал, но надеюсь там будет проще это реализовать.. Если всетаки у кого есть примеры как сделать подобный механизм на WINAPI просьба поделитесь..
  11. В первую очередь спасибо за потраченное время на развернутый ответ! 1) С проблемой "плывет изображение" наконец удалось разобраться. Решение отписал в соответствующей ветке; 2) С openMP я понял что не все так просто как хотелось бы. Думал добавлю параллельные директивы и все залетает, но не тут то было. 3) Вместо EigenFace , в данный момент использую LBPH, на мой взгляд он более стабильно определяет дистанцию. Каким образом можно обновлять базис для LPBH? По такому же принципу как и Eigen? 4) Застрял на реализации ThreadPool. Может ктонибудь помочь разобраться как из основного потока DWORD WINAPI ThreadMain запускать отдельный поток для обработки predict()? И как синхронизировать эти потоки?
  12. Плывет изображение

    Может кому пригодиться! Победил проблему искажения изображения путем подбора кодеков (переустановил драйвера на видеокарту + поставил K-Lite Mega codec pack с настройками под ffmpeg). Также в настройках самой камеры понизил Key Frame interval с 60 до 30. Снизил BitRate до 512.
  13. В исходниках функции predict() не нашел никакого параллельного кода. Перестроил проект с флагом /openmp и добавил заголовок #include <omp.h>. Далее сравнил результаты работы функции: Для 150 лиц время работы составило: 20-25 милисекунд model->predict(preprocessedFace, label, confidence); Для 150 лиц время работы составило: 60-65 милисекунд #pragma omp parallel { model->predict(preprocessedFace, label, confidence); } То есть с использованием openMP стало еще хуже. В чем может быть проблема? Что делаю не так?
  14. Всем спасибо. Буду читать изучать тестировать. Результат сообщу.
  15. Ок. Покопаю исходники метода predict(). То есть если в исходниках метод не распараллелен, мне необходимо править исходники и перестраивать библиотеки и либы? Что тогда делает опция "WITH TBB" в CMake? Извиняюсь за кучу вопросов. Пока каша в голове.
×