мы собираемся обнаруживать лица в видео. Как мы знаем, видео в основном создается из кадров, которые являются неподвижными изображениями. затем мы выполняем распознавание лиц для каждого кадра в видео
Прежде всего, вы устанавливаете OpenCV на свои машины. Если вы не знаете, как установить OpenCV. вы можете следить за моей предыдущей статьей Установка OpenCV для Python в Windows с помощью Anaconda
Обнаружение лиц с использованием каскадов Хаара — это подход, основанный на машинном обучении, при котором каскадная функция обучается на наборе входных данных. OpenCV уже содержит множество предварительно обученных классификаторов для лица, глаз, улыбки и т. д. Сегодня мы будем использовать классификатор лица. Вы также можете поэкспериментировать с другими классификаторами.
Вам необходимо скачать XML-файл обученного классификатора на GitHub (haarcascade_frontalface_default.xml), который доступен в репозитории OpenCV GitHub. вы можете перейти на страницу необработанных данных haarcascade_frontalface_default.xml, щелкнуть ее правой кнопкой мыши и сохранить как и сохранить этот файл в своем рабочем месте.
после этого запустите приглашение Anaconda из меню «Пуск».
Чтобы открыть блокнот Jupyter, нам нужно ввести следующую команду в командной строке:
Блокнот Юпитера
Когда записная книжка откроется в вашем браузере, вы увидите панель управления записной книжкой, которая покажет список записных книжек, файлов и подкаталогов в каталоге, где был запущен сервер записной книжки.
выберите путь к файлу и нажмите верхнюю часть правой кнопки «Создать» и выберите python 3 для создания файла записной книжки.
после этого вы можете увидеть файл блокнота Jupyter
после этого вы можете скопировать и вставить приведенный ниже код в этот пустой файл блокнота.
Чтобы обнаружить лица в видео:
после копирования и вставки кода в блокнот вы можете запустить этот файл, нажав кнопку «Выполнить».
после нажатия на кнопку запуска можно увидеть работу программы с использованием веб-камеры, распознавание лиц на видео с веб-камеры.
Несколько замечаний:
- Обнаружение работает только на изображениях в градациях серого. Поэтому важно преобразовать цветное изображение в оттенки серого. (строка 15)
- Функция detectMultiScale (строка 17) используется для обнаружения лиц. Он принимает 3 аргумента — входное изображение, коэффициент масштабирования и minNeighbours. scaleFactor указывает, насколько уменьшается размер изображения при каждом масштабировании. minNeighbours указывает, сколько соседей должно быть у каждого прямоугольника-кандидата, чтобы сохранить его. Вы можете подробно прочитать об этом здесь. Возможно, вам придется настроить эти значения, чтобы получить наилучшие результаты.
- faces содержит список координат прямоугольных областей, в которых были найдены лица. Мы используем эти координаты для рисования прямоугольников на нашем изображении.
- мы используем бесконечный цикл для просмотра каждого кадра в видео. Мы используем cap.read() для чтения каждого кадра. Первое возвращаемое значение — это флаг, указывающий, правильно ли был прочитан фрейм. Нам это не нужно. Второе возвращаемое значение — это неподвижный кадр, на котором мы будем выполнять обнаружение.