Оглавление:
- Шаг 1. Установите Anaconda
- Шаг 2: Загрузите пакет Open CV
- Шаг 3. Установите переменные среды
- Шаг 4. Протестируйте, чтобы подтвердить
- Шаг 5: Создайте код для распознавания лиц
- Шаг 6. Создайте код для создания набора данных
- Шаг 7. Создайте код для обучения распознавателя
- Шаг 8: Создайте код для распознавания лиц и результата
Видео: Распознавание лиц + распознавание: 8 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:53
Это простой пример запуска обнаружения и распознавания лиц с помощью OpenCV с камеры. ПРИМЕЧАНИЕ: Я СОЗДАЛ ДАННЫЙ ПРОЕКТ ДЛЯ КОНТРОЛЯ ДАТЧИКОВ И ИСПОЛЬЗОВАЛ КАМЕРУ В КАЧЕСТВЕ ДАТЧИКА ДЛЯ ОТСЛЕЖИВАНИЯ И РАСПОЗНАВАНИЯ ЛИЦ. Итак, наша цель В этом сеансе 1. Установить Anaconda 2. Загрузить пакет Open CV 3. Установить переменные среды 4. Тест для подтверждения 5 Создайте код для распознавания лиц 6. Сделайте код для создания набора данных 7. Сделайте код для обучения распознавателя 8. Сделайте код для распознавания лиц и Результат.
Шаг 1. Установите Anaconda
Anaconda - это, по сути, красиво упакованная среда разработки Python, которая поставляется с множеством полезных пакетов, таких как NumPy, Pandas, IPython Notebook и т. Д. Похоже, что ее рекомендуют повсюду в научном сообществе. Проверьте Anaconda, чтобы установить его.
Шаг 2: Загрузите пакет Open CV
Во-первых, перейдите на официальный сайт OpenCV, чтобы загрузить полный пакет OpenCV. Выберите версию, которая вам нравится (2.x или 3.x). Я использую Python 2.x и OpenCV 2.x - в основном потому, что так настраиваются / основаны учебники OpenCV-Python.
В моем случае я извлек пакет (по сути, папку) прямо на свой диск F. (F: / opencv).
Шаг 3. Установите переменные среды
Скопируйте и вставьте файл cv2.pyd
Каталог Anaconda Site-packages (например, F: / Program Files / Anaconda2 / Lib / site-packages в моем случае) содержит пакеты Python, которые вы можете импортировать. Наша цель - скопировать и вставить файл cv2.pyd в этот каталог (чтобы мы могли использовать импорт cv2 в наших кодах Python).
Для этого скопируйте файл cv2.pyd…
Из этого каталога OpenCV (начальная часть может немного отличаться на вашем компьютере):
# Python 2.7 и 64-битная машина: F: / opencv / build / python / 2.7 / x64 # Python 2.7 и 32-битная машина: F: / opencv / build / python / 2.7 / x84
В этот каталог Anaconda (начальная часть может немного отличаться на вашем компьютере):
F: / Program Files / Anaconda2 / Lib / сайт-пакеты
После выполнения этого шага мы теперь сможем использовать import cv2 в коде Python. НО, нам все еще нужно проделать немного больше работы, чтобы заставить FFMPEG (видеокодек) работать (чтобы мы могли делать такие вещи, как обработка видео).
Щелкните правой кнопкой мыши «Мой компьютер» (или «Этот компьютер» в Windows 8.1) -> щелкните левой кнопкой мыши «Свойства» -> щелкните левой кнопкой мыши вкладку «Дополнительно» -> щелкните левой кнопкой мыши кнопку «Переменные среды…». Добавьте новую переменную пользователя. чтобы указать на OpenCV (либо x86 для 32-разрядной системы, либо x64 для 64-разрядной системы.) В настоящее время я работаю на 64-разрядной машине.
32-битный OPENCV_DIRC: / opencv / build / x86 / vc12
64-разрядная версия OPENCV_DIRC: / opencv / build / x64 / vc12
Добавьте% OPENCV_DIR% / bin к переменной пользователя PATH.
Например, моя пользовательская переменная PATH выглядит так…
До:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts
После:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts;% OPENCV_DIR% / bin
Вот и все, готово! FFMPEG готов к использованию!
Шаг 4. Протестируйте, чтобы подтвердить
Нам нужно проверить, можем ли мы теперь делать это в Anaconda (через Spyder IDE):
- Импортировать пакет OpenCV
- Используйте утилиту FFMPEG (для чтения / записи / обработки видео)
Тест 1: можем ли мы импортировать OpenCV?
Чтобы подтвердить, что Anaconda теперь может импортировать пакет OpenCV-Python (а именно cv2), выполните их в консоли IPython:
импорт cv2
напечатать cv2._ version_
Если пакет cv2 импортирован нормально, без ошибок, а версия cv2 распечатана, то все в порядке!
Тест 2: можем ли мы использовать кодек FFMPEG?
Поместите образец
input_video.mp4
видео файл в каталоге. Мы хотим проверить, можем ли мы:
- прочтите этот видеофайл.mp4 и
- записать новый видеофайл (может быть.avi или.mp4 и т. д.)
Для этого нам нужен тестовый код на Python, назовите его test.py. Поместите его в тот же каталог, что и образец
input_video.mp4
файл.
Это то, что
test.py
может выглядеть так (Примечание: большое спасибо за предложения Пита и Уоррена в поле для комментариев - я заменил свой исходный тестовый код его - пожалуйста, проверьте его самостоятельно и сообщите нам, работает ли это лучше):
импорт cv2
cap = cv2. VideoCapture ("input_video.mp4") print cap.isOpened () # True = прочитать видео успешно. False - не читать видео. fourcc = cv2. VideoWriter_fourcc (* 'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) print out.isOpened () # True = записать видео успешно. False - не записать видео. cap.release () out.release ()
Этот тест ОЧЕНЬ ВАЖЕН. Если вы хотите обрабатывать видеофайлы, вам необходимо убедиться, что Anaconda / Spyder IDE может использовать FFMPEG (видеокодек). Мне потребовалось несколько дней, чтобы он заработал. Но я надеюсь, что на это у вас уйдет гораздо меньше времени!:) Примечание: еще один очень важный совет при использовании Anaconda Spyder IDE. Убедитесь, что вы проверили текущий рабочий каталог (CWD) !!!
Шаг 5: Создайте код для распознавания лиц
Цель
В этом сеансе
- Мы увидим основы обнаружения лиц с использованием каскадных классификаторов на основе функций Хаара.
- Мы расширим то же самое для обнаружения глаз и т. Д.
Обнаружение каскада Хаара в OpenCV
Здесь мы займемся обнаружением. OpenCV уже содержит множество предварительно обученных классификаторов для лица, глаз, улыбки и т. Д. Эти файлы XML хранятся в папке opencv / data / haarcascades /. Давайте создадим детектор лиц и глаз с помощью OpenCV. Сначала нам нужно загрузить необходимые XML-классификаторы. Затем загрузите наше входное изображение (или видео) в режиме оттенков серого ИЛИ мы можем использовать камеру (для обнаружения лиц в реальном времени)
импортировать numpy как np
import cv2 face_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / sources / data / haarcascades / haarcascade_frontalface_default.xml') eye_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / sources / data / haarcascades / haarcascades / haarcascades / haarcascades.xml ') cap = cv2. VideoCapture (0), а 1: ret, img = cap.read () gray = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale (gray, 1.5, 5) for (x, y, w, h) в лицах: cv2.rectangle (img, (x, y), (x + w, y + h), (255, 0, 0), 2) roi_gray = gray [y: y + h, x: x + w] roi_color = img [y: y + h, x: x + w] eyes = eye_cascade.detectMultiScale (roi_gray) for (ex, ey, ew, eh) в глазах: cv2.rectangle (roi_color, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2) print "found" + str (len (faces)) + "face (s)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff, если k == 27: перерыв cap.release () cv2.destroyAllWindows ()
Шаг 6. Создайте код для создания набора данных
Мы занимаемся распознаванием лиц, поэтому вам понадобятся изображения лиц! Вы можете создать свой собственный набор данных или начать с одной из доступных баз данных лиц, https://face-rec.org/databases/ предоставит вам актуальный обзор. Три интересных базы данных (части описания цитируются с
- AT&T Facedatabase
- Йельская база данных A
- Расширенная база данных Йельского университета B
ЗДЕСЬ я использую свой собственный набор данных … с помощью кода, который приведен ниже:
импортировать numpy как np
import cv2 face_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / sources / data / haarcascades / haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) id = raw_input ('введите идентификатор пользователя') sampleN = 0; в то время как 1: ret, img = cap.read () gray = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale (gray, 1.3, 5) for (x, y, w, h) в лицах: sampleN = образецN + 1; cv2.imwrite ("F: / Program Files / projects / face_rec / facesData / User." + str (id) + "." + str (sampleN) + ".jpg", серый [y: y + h, x: x + w]) cv2.rectangle (img, (x, y), (x + w, y + h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img', img) cv2.waitKey (1) если sampleN> 20: прервать cap.release () cv2.destroyAllWindows ()
Шаг 7. Создайте код для обучения распознавателя
Создайте функцию для подготовки обучающей выборки
Теперь мы определим функцию
getImagesWithID (путь)
который принимает абсолютный путь к базе данных изображений в качестве входного аргумента и возвращает кортеж из двух списков, один из которых содержит обнаруженные лица, а другой - соответствующую метку для этого лица. Например, если i-й индекс в списке лиц представляет 5-ю личность в базе данных, то соответствующее i-е место в списке меток имеет значение, равное 5.
Теперь преобразуйте лица набора данных (который создается на шаге 6) в файл.yml с помощью кода, который приведен ниже:
импорт ОС
import numpy as np import cv2 from PIL import Image # Для распознавания лиц мы используем LBPH Face Recognizer распознаватель = cv2.createLBPHFaceRecognizer (); path = "F: / Program Files / projects / face_rec / facesData" def getImagesWithID (path): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] # print image_path #getImagesWithID (path) faces = IDs = для imagePath в imagePaths: # Прочитать изображение и преобразовать его в оттенки серого facesImg = Image.open (imagePath).convert ('L') faceNP = np.array (facesImg, 'uint8') # Получить метку изображения ID = int (os.path.split (imagePath) [- 1].split (".") [1]) # Определить лицо на изображении faces.append (faceNP) IDs.append (ID) cv2.imshow ("Добавление лиц для обучения", faceNP) cv2.waitKey (10) return np.array (IDs), Face Ids, faces = getImagesWithID (path) распознаватель.train (лица, Ids) распознаватель.save ("F: / Program Files / projects / face_rec / faceREC / trainingdata.yml") cv2.destroyAllWindows ()
с помощью этого кода весь набор данных лиц преобразуется в один файл.yml…..путь: ("F: / Program Files / projects / face_rec / faceREC / trainingdata.yml")
Шаг 8: Создайте код для распознавания лиц и результата
Guyzz, это последний шаг, на котором мы можем создать код для распознавания лиц с помощью вашей веб-камеры. НА ЭТОМ ШАГЕ ЕСТЬ ДВЕ ОПЕРАЦИИ, КОТОРЫЕ БУДУТ ВЫПОЛНЯТЬСЯ…. 1. захват видео с камеры 2. сравните его с вашим файлом.yml
импортировать numpy как npimport cv2 face_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / sources / data / haarcascades / haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) rec = cv2.createLBPHFaceRecognizer (); rec.load ("F: / Program Files / projects / face_rec / faceREC / trainingdata.yml") id = 0 font = cv2.cv. InitFont (cv2.cv. CV_FONT_HERSHEY_COMPLEX_SMALL, 5, 1, 0, 4), а 1: ret, img = cap.read () gray = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale (gray, 1.5, 5) for (x, y, w, h) в лицах: cv2.rectangle (img, (x, y), (x + w, y + h), (255, 0, 0), 2) id, conf = rec.predict (серый [y: y + h, x: x + w]) if (id == 2): id = "alok" if id == 1: id = "alok" if id == 3: id = "anjali" if id == 4: id = "Gaurav" if id = = 5: id = 'rahul' if id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y + h), font, 255) cv2.imshow ('img', img), если cv2.waitKey (1) == ord ('q'): break cap.release ()
cv2.destroyAllWindows ()
и, наконец, результат будет прямо перед вашими глазами … Вы также можете скачать zip-файл по ссылке ниже: Нажмите здесь, чтобы загрузить коды Итак, в этом руководстве мы выполнили задачу обнаружения лиц + распознавания с помощью OpenCV ….. если вы как это поучительно….. плззз, подпишитесь на меня и проголосуйте за меня…..спасибо друзьям:)
Рекомендуемые:
Распознавание лиц на Raspberry Pi 4B за 3 шага: 3 шага
Обнаружение лиц на Raspberry Pi 4B за 3 шага: в этом руководстве мы собираемся выполнить обнаружение лиц на Raspberry Pi 4 с помощью Shunya O / S, используя библиотеку Shunyaface. Shunyaface - это библиотека распознавания / обнаружения лиц. Проект направлен на достижение максимальной скорости обнаружения и распознавания с помощью
Обнаружение, обучение и распознавание лиц Opencv: 3 шага
Обнаружение, обучение и распознавание лиц Opencv: OpenCV - это библиотека компьютерного зрения с открытым исходным кодом, которая очень популярна для выполнения основных задач обработки изображений, таких как размытие, смешивание изображений, улучшение изображения, а также качество видео, установление пороговых значений и т. Д. В дополнение к обработке изображений, это пров
Распознавание и идентификация лиц - Идентификатор лица Arduino с использованием OpenCV Python и Arduino: 6 шагов
Распознавание и идентификация лиц | Идентификатор лица Arduino с использованием OpenCV Python и Arduino. Распознавание лиц AKA Face ID - одна из самых важных функций мобильных телефонов в настоящее время. Итак, у меня возник вопрос: «Могу ли я иметь идентификатор лица для моего проекта Arduino?» и ответ - да … Мой путь начался следующим образом: Шаг 1: Доступ к нам
Распознавание лиц на практике: 21 шаг
Распознавание лиц на практике: это тема, которая меня так увлекает, что заставляет меня терять сон: компьютерное зрение, обнаружение объектов и людей с помощью предварительно обученной модели
Распознавание лиц в реальном времени: комплексный проект: 8 шагов (с изображениями)
Распознавание лиц в реальном времени: сквозной проект: в моем последнем руководстве по OpenCV мы изучили АВТОМАТИЧЕСКОЕ ОТСЛЕЖИВАНИЕ ОБЪЕКТОВ ВИДЕНИЯ. Теперь мы будем использовать нашу PiCam для распознавания лиц в режиме реального времени, как вы можете видеть ниже: Этот проект был выполнен с помощью этой фантастической «Библиотеки компьютерного зрения с открытым исходным кодом»