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

Nuzhny

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

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

  • Посещение

  • Days Won

    176

Сообщения, опубликованные пользователем Nuzhny


  1. Я бы не сказал, что каскады Хаара работают медленно. Имеется в виду стандартный пример из OpenCV? Его можно ускорить в несколько раз. Не находить соседей, например. А ложные сработки отсеивать временным фильтром.


  2. Не видел. Но вообще, сделать это просто.

    Если проекции двух прямоугольников на горизонтальную ось и на вертикальную накладываются друг на друга, то прямоугольники пересекаются.

    Проекция прямоугольника на горизонтальную ось есть (rect.x, rect.x + rect.width). Надо лишь написать маленькую функцию по проверке наложения этих проекция - всего несколько условий.


  3. cv надо писать маленькими буквами. Это не класс, а namespace, Rect определён в нём. Ошибка "Ambiguity between 'Rect' and ..." говорит о том, что компилятор не знает какой именно Rect ему использовать. Декларация cv::Rect прямо указывает компилятору, что надо использовать Rect из OpenCV. Должно работать.

    В крайнем случае, напиши Rect_<int>


  4. Обычно в отдельный поток выделяют самую "тяжёлую" в вычислительном смысле часть. В твоём случае это, вероятно, поиск лица на кадре. Или нет?

    Если да, то выделить её в отдельный поток, сделать очередь кадров, которые ждут обработки. При получении очередного кадра от камеры просто складывать его в очередь. А поток с поиском лиц пусть её разгребает. Так как компьютеры сейчас многоядерные, то имеет смысл таких "тяжёлых" потоков сделать по числу ядер.


  5. Я думаю, что самый правильный ответ: "А хрен его знает!"

    Одно дело - научные статьи, совершенно другое - практика. А тестирование разных методов и есть практика.

    Так вот. Я видел работу нескольких разных коммерческих (и довольно дорогих) библиотек для распознавания лиц. Некоторые библиотеки более капризны, некоторые менее., но все работают в условиях близких к идеальным: ровное и яркое освещение, никаких наклонов и поворотов лица и т.д. То есть нельзя повесить на стене дома камеру и направить на тротуар - распознавать не будет. Только помещение с искусственным освещением, хорошая видеокамера.

    Не многие выдают процент распознавания выше 80, худшие около 40. Но даже лучшую, что я видел - немецкую Когнитек, можно легко обмануть, приложив к своему лицу качественную фотографию другого человека соответствующего размера.

    Поэтому: "А хрен его знает!"

    Сейчас нормальное распознавание можно сделать разве что в аэропортах, в нешироких проходах или кабинках, лучше всего с помощью не плоского, трёхмерного распознавания на двух или более камерах.


  6. Вышла в конце 2009 года очень неплохая книга «Цифровая обработка видеоизображений» А. А. Лукьяница, А. Г. Шишкина.

    В ней довольно подробно описаны вопросы вычитания фона, сегментации, сопровождения объектов и другие темы, актуальные для видеоаналитики охранных систем. Содержание можно найти в интернете, по ссылке один из самых дешёвых способов покупки (я книгу через них и заказывал). Мне книга понравилась гораздо больше переводных "Компьютерных зрений" что Понса с Форсайтом, что Шапиро со Стокманом.

    В общем, рекомендую к прочтению.


  7. Битрейт никак не задать, просто не выведены интерфейсы. Если OpenCV скомпилирована по-умолчанию, то в качестве обёртки для компрессии и записи avi используется виндовская vfw. В этом случае выставляется: copts.dwQuality = 10000;, где copts - это AVICOMPRESSOPTIONS (см. файл ..OpenCV2.1\src\highgui\cvcap_vfw.cpp). Это значение для большинства (или для всех?) кодеков является значением битрейта.

    Выхода два:

    1. доработать OpenCV, сделать интерфейс для задания битрейта при записи в avi - это трудный путь;

    2. исправить в исходниках приведённое мной значение по-умолчанию, перекомпилировать highgui.dll и пользоваться.

×