Теперь detect_faces(). Ну, сначала пытаемся найти на картинке лица. На выходе получаем много ложных срабатываний и, иногда, лица. Тут работает правило garbage in – garbage out. Как правило, ЗНАЧИТЕЛЬНО выгоднее повышать качество исходных данных, чем потом пытаться алгоритмически всё исправить. Поэтому надо отделить зёрна от плевел. Например, вторым детектором. Чтобы не тратить ещё кучу времени на повторное определение и сравнение результатов, поступаем проще: вырезаем из кадра то, что OpenCV посчитал лицами и даём на вход детектору из dlib, у которого процент ложных срабатываний меньше и, в отличие от OpenCV, регулируется. Поскольку мы работаем с маленькими фрагментами, то проверка не стоит практически ничего (около 1.5 мс). На выходе имеем дай бог 10% пригодных лиц от общего количества. Вместе с водой выплёскивается немалое количество годных лиц, но что уж. Всё-таки что-то остаётся. Занятно, что даже при двойном контроле мусор прорывается. Иногда я не понимаю, почему кусок линолеума легко проходит тест на лицеподобность (а моя ряха с утра – нет, гггг). А иногда накатывают ужасы из детства, монстры под кроватью и осознание того, что лица окружают меня везде. И это, очевидно, демоны, которые прорывают барьеры между мирами, и никто, никто не спасётся (на картинке как раз они). И нет, у меня нет собаки. И дельфина тоже нет #Jarvis
Комментариев нет:
Отправить комментарий