Съдържание:
- Стъпка 1: Инсталирайте Anaconda
- Стъпка 2: Изтеглете Open CV Package
- Стъпка 3: Задайте променливи на околната среда
- Стъпка 4: Тест за потвърждение
- Стъпка 5: Направете код за разпознаване на лица
- Стъпка 6: Направете код за създаване на набор от данни
- Стъпка 7: Направете код за обучение на разпознаващия
- Стъпка 8: Направете код, за да разпознаете лицата и резултата
Видео: Разпознаване на лице+разпознаване: 8 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:54
Това е прост пример за стартиране на разпознаване и разпознаване на лица с OpenCV от камера. ЗАБЕЛЕЖКА: НАПРАВИХ ТОЗИ ПРОЕКТ ЗА СЪДЪРЖАНИЕ НА СЕНЗОРИ И ИЗПОЛЗВАХ КАМЕРАТА КАТО СЕНЗОР ЗА ПРОСЛЕДВАНЕ И ПРИЗНАВАНЕ НА ЛИЦА. Така че, нашата цел В тази сесия, 1. Инсталирайте Anaconda 2. Изтеглете Open CV Package 3. Задайте променливи на околната среда 4. Тествайте, за да потвърдите 5 Направете код за разпознаване на лица 6. Направете код за създаване на набор от данни 7. Направете код за обучение на разпознаващия 8. Направете код за разпознаване на лица и резултат.
Стъпка 1: Инсталирайте Anaconda
Anaconda е по същество добре пакетирана Python IDE, която се доставя с много полезни пакети, като NumPy, Pandas, IPython Notebook и др. Изглежда, че се препоръчва навсякъде в научната общност. Проверете Anaconda, за да го инсталирате.
Стъпка 2: Изтеглете Open CV Package
Първо, отидете на официалния сайт на 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-пакети в моя случай) съдържа пакетите на Python, които можете да импортирате. Нашата цел е да копираме и поставим файла cv2.pyd в тази директория (така че да можем да използваме import 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 / site-пакети
След като извършим тази стъпка, сега ще можем да използваме 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._ версия_
Ако пакетът 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 = прочетете видеоклипа успешно. Фалшиво - видеоклипът не се чете. fourcc = cv2. VideoWriter_fourcc (*'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) print out.isOpened () # True = запис на видеоклипа успешно. Неверно - не можете да запишете видеоклип. cap.release () out.release ()
Този тест е МНОГО ВАЖЕН. Ако искате да обработвате видео файлове, трябва да се уверите, че Anaconda / Spyder IDE може да използва FFMPEG (видео кодек). Отне ми дни, за да го задействам. Но се надявам, че ще ви отнеме много по -малко време!:) Забележка: още един много важен съвет при използване на Anaconda Spyder IDE. Уверете се, че сте проверили текущия работен указател (CWD) !!!
Стъпка 5: Направете код за разпознаване на лица
Цел
В тази сесия,
- Ще видим основите на разпознаването на лица с помощта на каскадни класификатори, базирани на Haar Feature
- Ще разширим същото за откриване на очи и др
Каскадно откриване на Haar в 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 /cascade_data.xml ') капачка = cv2. VideoCapture (0) докато 1: ret, img = cap.read () сиво = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) лица = face_cascade.detectMultiScale (сиво, 1.5, 5) за (x, y, w, h) в лица: cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = сив [y: y +h, x: x+w] roi_color = img [y: y+h, x: x+w] очи = eye_cascade.detectMultiScale (roi_gray) за (ex, ey, ew, eh) в очите: cv2.rectangle (roi_color, (ex, ey), (ex +ew, ey +eh), (0, 255, 0), 2) отпечатайте "намерено" +str (len (лица)) +"лице (и)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff if k == 27: break cap.release () cv2.destroyAllWindows ()
Стъпка 6: Направете код за създаване на набор от данни
Ние правим разпознаване на лица, така че ще ви трябват някои изображения на лица! Можете или да създадете свой собствен набор от данни, или да започнете с една от наличните бази данни за лица, https://face-rec.org/databases/ ви дава актуален преглед. Три интересни бази данни са (части от описанието са цитирани от
- База данни на AT&T Facedata
- Yale Facedatabase A
- Разширена база данни на Yale Facedata 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 ('enter user id') sampleN = 0; докато 1: ret, img = cap.read () сиво = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) лица = face_cascade.detectMultiScale (сиво, 1.3, 5) за (x, y, w, h) в лица: sampleN = пробаN+1; cv2.imwrite ("F:/Program Files/projects/face_rec/faceData/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) if sampleN> 20: break cap.release () cv2.destroyAllWindows ()
Стъпка 7: Направете код за обучение на разпознаващия
Създайте функцията за подготовка на тренировъчния комплект
Сега ще определим функция
getImagesWithID (път)
който приема абсолютния път към базата данни с изображения като входен аргумент и връща кортеж от 2 списъка, единият съдържащ откритите лица, а другият, съдържащ съответния етикет за това лице. Например, ако i -тият индекс в списъка с лица представлява 5 -то лице в базата данни, съответното i -то място в списъка с етикети има стойност равна на 5.
Сега преобразувайте лицата на набора от данни (който е създаден в стъпка 6) в.yml файл с помощта на кода, даден по -долу:
внос os
import numpy as np import cv2 from PIL import Image # За разпознаване на лица ще използваме разпознавателя за разпознаване на лица LBPH = cv2.createLBPHFaceRecognizer (); path = "F:/Program Files/projects/face_rec/faceData" def getImagesWithID (path): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] # print image_path #getImagesWithID (пътека) лица = Идентификатори = за imagePath в imagePaths: # Прочетете изображението и го преобразувайте в лица в сиви тоновеImg = Image.open (imagePath).convert ('L') faceNP = np.array (faceImg, 'uint8') # Вземете етикета на изображението ID = int (os.path.split (imagePath) [-1].split (".") [1]) # Открийте лицето в изображението lica.append (faceNP) IDs.append (ID) cv2.imshow ("Добавяне на лица за обучение", faceNP) cv2.waitKey (10) връщане np.array (IDs), лица Ids, фасони = getImagesWithID (пътека) разпознаващ.train (лица, Ids) prepoznat.save ("F:/Програмни файлове/проекти/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()
с помощта на този код целият набор от данни за лица, преобразуван в един.yml файл ….. местоположението на пътя е ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml")
Стъпка 8: Направете код, за да разпознаете лицата и резултата
Гайз, това е последната стъпка, в която можем да създадем кода за разпознаване на лица с помощта на вашата уеб камера В ТАЗИ СТЪПКА ИМА ДВЕ ОПЕРАЦИИ, КОИТО ЩЕ ИЗПЪЛНЯТ…. 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.createLBPHere 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 () сиво = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) лица = face_cascade.detectMultiScale (сиво, 1.5, 5) за (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), шрифт, 255) cv2.imshow ('img', img) if cv2.waitKey (1) == ord ('q'): break cap.release ()
cv2.destroyAllWindows ()
и най -накрая резултатът ще дойде пред очите ви ……. можете също да изтеглите zip файла отдолу на връзката: Щракнете тук, за да изтеглите кодовете Така че в тази инструкция изпълнихме задачата за разпознаване на лица+разпознаване с помощта на OpenCV …..ако като тази инструкция ….. plzzz се абонирайте за мен и гласувайте за мен ….. благодаря приятели:)
Препоръчано:
Огледало за разпознаване на лице със секретно отделение: 15 стъпки (със снимки)
Огледало за разпознаване на лица с тайно отделение: Винаги съм бил заинтригуван от вечно творческите тайни отделения, използвани в истории, филми и други подобни. Така че, когато видях конкурса за тайни отделения, реших сам да експериментирам с идеята и да направя обикновено изглеждащо огледало, което отваря
MATLAB Лесно разпознаване на лице: 4 стъпки
MATLAB Лесно разпознаване на лица: Основната цел на тези инструкции е да покаже колко лесно ще бъде обработката на изображението. С помощта на MATLAB Откриването и проследяването на лица е важно и активно поле за изследване, затова ще обясня как може да се направи с ум
Заключване на вратата за разпознаване на лице: 8 стъпки
Заключване на врата за разпознаване на лице: Представям около месец заключване на вратата за разпознаване на лица! Опитах се да изглежда възможно най-спретнато, но мога да направя само на 13-годишно дете. Това заключване на вратата за разпознаване на лице се управлява от Raspberry Pi 4, със специална преносима бат
Opencv разпознаване на лица, обучение и разпознаване: 3 стъпки
Откриване, обучение и разпознаване на лица с Opencv: OpenCV е библиотека за компютърно зрение с отворен код, която е много популярна за изпълнение на основни задачи по обработка на изображения, като замъгляване, смесване на изображения, подобряване на изображението, както и качество на видеото, праг и т.н. В допълнение към обработката на изображения, доказва се
Разпознаване на лице на практика: 21 стъпки
Разпознаване на лица на практика: Това е тема, от която съм толкова очарован, че ме кара да губя сън: Компютърно зрение, откриване на обекти и хора чрез предварително обучен модел