Распознавание лиц | Привет, Эдди Пэн кот или человек, или?

искусственный интеллект Идентификация изображения OpenCV
Распознавание лиц | Привет, Эдди Пэн кот или человек, или?

Соси кошек вместе с кодом! Эта статья участвует【Эссе "Мяу Звезды"】.

Эдди Пэн классный, красивый, позитивный и симпатичный. Кот очень липкий, милый и симпатичный, поэтому я форсирую вопрос. Теперь есть красивое фото Эдди Пэна, как мы можем сообщить машине, является ли фотография кошка или кот?а люди? С помощью библиотеки компьютерного зрения в этой статье определяется, является ли содержимое, описанное на картинке, человеком или кошкой?

Введение

Чтобы быстро идентифицировать содержимое изображения, мы используем две библиотеки Python, а именноopencvиPillow.

1.1 OpenCV

OpenCVПолное название — Open Source Computer Vision Library, кроссплатформенная библиотека компьютерного зрения.

OpenCVЕго можно использовать для решения задач в следующих областях:

  • Дополненная реальность
  • распознавание лица
  • Распознавание жестов
  • Взаимодействие человека с компьютером
  • Распознавание действий
  • отслеживание движения
  • распознавание объектов
  • Сегментация изображения
  • робот

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

cat face
Вы можете выбрать один

  • haarcascade_frontalcatface_extended.xml
  • haarcascade_frontalcatface.xml

human face

haarcascade_frontalface_default.xml

Загрузите два файла в каталог проекта,cat faceФайл переименован в catface_detector.xml;human faceФайл переименован в humanface_detector.xml.

1.2 Pillow

Библиотека изображений Python — это бесплатная дополнительная библиотека с открытым исходным кодом, которая поддерживает открытие, управление и сохранение множества различных форматов файлов изображений.PIL, но остановили разработку в 2011 году, послеPillowпроекты на основеPILФилиал продолжает поддерживать операции, связанные с изображениями, и поддерживает Python 3.

1.3 Установка среды

Выполните следующую команду на компьютере с установленной средой Python 3, чтобы установить соответствующую библиотеку.

pip install opencv-python pillow

1.4 Подготовка изображения

Чтобы проверить точность программирования, мы загружаем две картинки, Пэн Юянь и кот. Фотография Пэн Юяня называется test1.jpg.

test1.jpg

Это фото кота называется test2.jpg.

test2.jpg

2. Практика Кодекса

2.1 Декомпозиция кода

Сначала мы создаем файл pythoncv.py, В файле сначала объявляются две библиотеки, которые мы хотим использовать в среде импорта Python.

import cv2
from PIL import Image

Затем загрузите в программу файл модели черт лица из каталога проекта.

catface_cascade = cv2.CascadeClassifier('catface_detector.xml')
humanface_cascade = cv2.CascadeClassifier('humanface_detector.xml')

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

newsize = (600, 600)
imgr1 = Image.open("test1.jpg")
imgr1 = imgr1.resize(newsize)
imgr1.save("resized1.jpg")

imgr2 = Image.open("test2.jpg")
imgr2 = imgr2.resize(newsize)
imgr2.save("resized2.jpg")

imgr1 = imgr1.convert('L') 
imgr1.save('ready1.jpg')

imgr2 = imgr2.convert('L')
imgr2.save("ready2.jpg")

# Read the input image
img1 = cv2.imread('ready1.jpg')
img2 = cv2.imread('ready2.jpg')

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

human_faces = humanface_cascade.detectMultiScale(img1, scaleFactor=1.3, minNeighbors=5, minSize=(75, 75))
cat_faces = catface_cascade.detectMultiScale(img2, scaleFactor=1.3, minNeighbors=5, minSize=(75, 75))

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

for (i, (x, y, w, h)) in enumerate(human_faces):
   cv2.rectangle(img1, (x, y), (x+w, y+h), (220, 90, 230), 3)
   cv2.putText(img1, "Human Face - #{}".format(i + 1), (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.55, (220, 90, 230), 2)

for (i, (x, y, w, h)) in enumerate(cat_faces):
   cv2.rectangle(img2, (x, y), (x+w, y+h), (0,255, 0), 3)
   cv2.putText(img2, "Cat Faces - #{}".format(i + 1), (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.55, (0, 0, 255), 2)

Наконец, мы сохраним изображение с обнаруженным лицом.

cv2.imwrite("faces_detected1.png", img1)

cv2.imwrite("faces_detected2.png", img2)

В общем, структура каталогов нашего проекта выглядит следующим образом.

image.png

2.2 Результаты выполнения

После выполнения программы в каталоге есть еще много файлов, как показано на следующем рисунке.

image.png

Проверьте окончательный результат.

faces_detected1.png

faces_detected2.png

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

3. Резюме

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

Во всем процессе практики файл модели OpenCV очень важен для процесса распознавания.Некоторые кошки не могут быть успешно распознаны, например, Гарфилд, серебряный градиент, вы можете найти подходящий файл модели.

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

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


Мальчик, ты не можешь видеть достаточно? Нажмите на домашнюю страницу камня, просто нажмите и посмотрите, может быть, будет сюрприз? Добро пожаловать в поддержкуНравится/Подписывайтесь/Комментируйте, ваша поддержка — моя самая большая мотивация для Gengwen, спасибо!