Распознавание лиц и глаз с помощью OpenCV и Raspberry Pi


В этом проекте рассматривается система распознавания лиц и глаз с помощью OpenCV на Raspberry Pi 4.

Цифровая обработка изображений и компьютерное зрение — это взаимосвязанные области в мире технологий. По своей сути обработка изображений — это уточнение и корректировка изображений. Результатом обычно является еще одно улучшенное изображение. Напротив, компьютерное зрение идет на шаг дальше — оно не просто обрабатывает изображение; оно интерпретирует его. Алгоритмы компьютерного зрения извлекают важные детали или особенности из изображений, предлагая более полный анализ визуального ввода.

Распознавание лиц и глаз с помощью OpenCV и Raspberry Pi

В огромном мире инструментов, связанных с изображениями, OpenCV закрепила свои позиции лидера. Она не просто универсальна, но ее обширная документация и поддержка процветающего сообщества делают ее бесценным ресурсом. В этом руководстве мы освещаем практическое применение OpenCV и проведем вас через этапы обнаружения лиц и глаз на изображениях, снятых камерой Raspberry Pi. С помощью каскадов Хаара, метода обнаружения объектов, основанного на машинном обучении, мы будем определять эти особенности с впечатляющей точностью.

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

Ранее на нашем сайте мы уже рассматривали распознавание лиц с помощью Raspberry Pi и библиотеки OpenCV - это более старая статья, но весьма подробная и в ней вы можете найти ряд аспектов, которые не освещены в этой статье.

Необходимые компоненты

  1. Плата Raspberry Pi 4 Model B (или другая) (купить на AliExpress).
  2. Камера для Raspberry Pi (купить на AliExpress).
  3. SD-карта 16/32 ГБ.
  4. Адаптер постоянного тока 5 В, 3 А для RPi.
  5. ЖК-дисплей (опционально).
  6. Мышь и клавиатура (опционально).

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

Подключение камеры к Raspberry Pi

Raspberry Pi Camera — периферийное устройство, разработанное Raspberry Pi Foundation для использования с серией одноплатных компьютеров Raspberry Pi. Модуль камеры позволяет добавлять возможности видео/фотосъемки в проекты Raspberry Pi.

Для этого проекта мы можем использовать 5-мегапиксельную камеру Raspberry Pi.

Структурная схема подключения камеры к Raspberry Pi

Просто подключите модуль камеры к плате Raspberry Pi 4 с помощью разъема камеры.

Подключение камеры к Raspberry Pi

Чтобы использовать камеру, вам нужно сначала включить модуль камеры. Откройте Raspberry Pi Configuration Tool, введя sudo raspi-config в терминале. Перейдите к Interfacing OptionsCamera и включите его.

Концепция и алгоритм обнаружения лиц и глаз

Основная цель проекта — идентификация и выделение лиц и глаз в непрерывном видеопотоке.Для этого мы использовали библиотеку OpenCV.

OpenCv — широко используемая библиотека компьютерного зрения для различных задач обработки изображений, включая обнаружение объектов. Для обнаружения лиц и глаз мы используем модель каскадов Хаара. Каскады Хаара — это подход на основе машинного обучения, в котором каскадная функция обучается обнаруживать объекты на изображениях.

Различные каскады Хаара

Это особенно эффективный метод обнаружения объектов, который широко используется для таких задач, как обнаружение лиц в сценариях реального времени. OpenCV предоставляет предварительно обученные каскады Хаара для обнаружения лиц, что делает его легкодоступным для многих разработчиков.

Модель каскадов Хаара для обнаружения лиц

Алгоритм распознавания лиц и глаз с использованием Raspberry Pi и OpenCV можно объяснить следующим образом:

  1. Инициализация:
    • Загрузите каскады Хаара, предназначенные для распознавания лиц и глаз.
    • Настройте камеру Raspberry Pi на желаемое разрешение видео и частоту кадров.
  2. Непрерывный захват кадров: видеопоток захватывается кадр за кадром для обработки в реальном времени.
  3. Предварительная обработка:
    • Каждый захваченный кадр преобразуется в оттенки серого. Представление в оттенках серого упрощает изображение, устраняя цветовые нюансы, что часто делает обнаружение объектов более быстрым и точным.
  4. Распознавание лиц:
    • Лица внутри рамки в оттенках серого идентифицируются.
    • Выделите каждое обнаруженное лицо, нарисовав вокруг него прямоугольник.
  5. Распознавание глаз:
    • Для каждого идентифицированного лица определите интересующую область (обычно это область лица), где с наибольшей вероятностью будут расположены глаза.
    • В этой области найдите глаза.
    • Выделите каждый обнаруженный глаз, нарисовав вокруг него прямоугольник.
  6. Отображение:
    • Обработанный кадр, теперь с прямоугольниками вокруг обнаруженных лиц и глаз, отображается пользователю в режиме реального времени.
  7. Взаимодействие с пользователем:
    • Предоставьте пользователю возможность выйти из режима обнаружения и завершить программу.

Настройка Raspberry Pi, установка библиотек и зависимостей

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

Следующий шаг — установить picamera. Поэтому установите его с помощью pip.

Создайте папку в домашнем каталоге вашего Raspberry Pi с любым именем, например “Face Recognition“ («Распознавание лиц»).

Домашний каталог Raspberry Pi

Код ссылается на два XML-файла (haarcascade_frontalface_default.xml и haarcascade_eye.xml), которые представляют собой каскады Хаара, используемые для обнаружения лиц и глаз соответственно.

Загрузите эти файлы по следующим ссылкам:

  1. Скачатьhaarcascade_frontalface_default.xml
  2. Скачатьhaarcascade_eye.xml

Добавьте эти файлы в папку, которую вы создали выше.

Копирование файлов haarcascade_frontalface_default.xml и haarcascade_eye.xml в каталог для нашего проекта распознавания лиц и глаз

Настройка завершена. Теперь мы можем перейти к проекту распознавания лиц и глаз с использованием Raspberry Pi и OpenCV.

Код Python для Raspberry Pi для распознавания лиц и глаз

Теперь давайте разработаем код Python, который поможет в обнаружении глаз и лица, используя библиотеку OpenCV и камеру Raspberry Pi .

Код Python

Откройте Thonny IDE и вставьте следующий код в редактор Thonny. Сохраните этот файл под именем «face_detection.py» в папке, которую мы создали ранее. Убедитесь, что описанные выше XML-файлы присутствуют в каталоге, указанном в коде ( /home/mypi/Face Recognition/).

Объяснение работы кода

  • cv2: Это библиотека OpenCV, мощная библиотека для задач компьютерного зрения.
  • numpy: Это библиотека для числовых операций. OpenCV использует массивы Numpy для манипуляций с изображениями.
  • picamerapicamera.array: Это библиотеки для доступа к модулю камеры Raspberry Pi.

Эта строка определяет основную функцию, в которой будет находиться основная логика кода.

Код загружает предварительно обученные классификаторы (называемые каскадами Хаара) для обнаружения лиц и глаз. Эти XML-файлы содержат данные для обнаружения лиц и глаз на изображениях.

Инициализирует камеру Raspberry Pi с разрешением 320×240 и частотой кадров 15 кадров в секунду.

  • Функция capture_continuous непрерывно захватывает кадры.
  • PiRGBArray обеспечивает интерфейс 3D RGB-матрицы для изображений, полученных с камеры.
  • Каждый захваченный кадр преобразуется в массив NumPy для дальнейшей обработки.

Цветное изображение преобразуется в оттенки серого. Для обнаружения используются изображения в оттенках серого, поскольку для каскадных классификаторов цветовая информация обычно не требуется.

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

Рисует прямоугольник вокруг каждого обнаруженного лица на исходном цветном изображении.

  • Для каждого обнаруженного лица извлекается интересующая нас область (region of interest, ROI) (как в оттенках серого, так и в цветном варианте).
  • Затем в этой области интереса обнаруживаются глаза.
  • Вокруг каждого обнаруженного глаза в цветовой области интереса рисуются прямоугольники.

  • Размер обработанного кадра изменяется для удобства отображения.
  • Затем кадр отображается в окне под названием “Face and Eye Detection” («Распознавание лиц и глаз»).

  • Поток обрезается для подготовки к следующему кадру.
  • Если пользователь нажмет «q», цикл (и программа) завершится.

Закрывает все открытые окна OpenCV.

Это распространенная идиома Python. Когда скрипт запускается напрямую (не импортируется), функция main() выполняется.

Тестирование работы проекта

Запустите скрипт выше, нажав кнопку Run («Запустить»). Появится окно, в котором будут показаны живые изображения объекта с камеры.

Поднесите камеру к лицу. В окнах отобразится синий прямоугольник вокруг лица и два зеленых прямоугольника вокруг глаз.

Тестирование работы проекта на одном лице

Скрипт также может обнаруживать несколько лиц на изображении.

Тестирование работы проекта на нескольких лицах

Вы можете попробовать это несколько раз, поднося камеру к разным людям. Лицо и глаза будут распознаны каждый раз.

Заключение

Используя библиотеку OpenCV с камерой Raspberry Pi, можно распознавать лица и глаза в реальном времени, демонстрируя мощь компактных систем в задачах компьютерного зрения. Хотя текущая установка с использованием каскадов Хаара эффективна, такие достижения, как глубокое обучение, могут обеспечить более высокую точность. Этот проект подчеркивает потенциал доступной и недорогой технологии в практических приложениях компьютерного зрения.

(Проголосуй первым!)
Загрузка...
28 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *