Агуулгын хүснэгт:
- Алхам 1: Монголбанк - Билл материал
- Алхам 2: OpenCV 3 багцыг суулгах
- Алхам 3: Камераа туршиж үзээрэй
- Алхам 4: Нүүр илрүүлэх
- Алхам 5: Мэдээлэл цуглуулах
- Алхам 6: Дасгалжуулагч
- Алхам 7: Танигч
- Алхам 8: Дүгнэлт
Видео: Бодит цагийн нүүр таних: Төгсгөлийн төсөл: 8 алхам (зурагтай)
2024 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2024-01-30 11:04
OpenCV -ийг судлах сүүлчийн хичээл дээр бид АВТОМАТ алсын хараатай обьектийн мөрдөхийг сурсан. Одоо бид PiCam-ийг ашиглан нүүр царайг бодит цаг хугацаанд таних болно.
Энэхүү төслийг OpenCV хэмээх гайхалтай "Нээлттэй эхийн компьютерийн харааны номын сан" -аар хийсэн. Энэ заавар дээр бид Raspberry Pi (OS гэж Raspbian) болон Python дээр анхаарлаа хандуулах болно, гэхдээ би кодыг Mac дээрээ туршиж үзсэн бөгөөд энэ нь бас сайн ажилладаг. OpenCV нь тооцооллын үр ашигт зориулагдсан бөгөөд бодит цагийн хэрэглээнд ихээхэн анхаарал хандуулдаг. Тиймээс энэ нь камер ашиглан нүүр царайг бодит цаг хугацаанд танихад тохиромжтой юм.
Нүүр таних талаар иж бүрэн төсөл бий болгохын тулд бид маш тодорхой 3 үе шаттай ажиллах ёстой.
- Нүүр илрүүлэх, мэдээлэл цуглуулах
- Танигчийг сургах
- Нүүр таних
Доорх блок диаграм нь эдгээр үе шатуудыг үргэлжлүүлнэ.
Алхам 1: Монголбанк - Билл материал
Үндсэн хэсгүүд:
- Raspberry Pi V3 - 32.00 доллар
- 5 мегапиксел 1080p мэдрэгч OV5647 мини камер видео модуль - 13.00 доллар
Алхам 2: OpenCV 3 багцыг суулгах
Би Raspberry Pi V3 -ийг Raspbian (Stretch) -ийн хамгийн сүүлийн хувилбар болгон шинэчилж байгаа тул OpenCV -ийг суулгах хамгийн сайн арга бол Adrian Rosebrock -ийн боловсруулсан маш сайн зааврыг дагаж мөрдөх явдал юм: Raspbian Stretch: OpenCV 3 + Python -ийг Raspberry Pi дээрээ суулгаарай..
Би Pi дээр OpenCV суулгахын тулд хэд хэдэн өөр гарын авлага туршиж үзсэн. Адрианы заавар бол хамгийн шилдэг нь юм. Түүний зааврыг алхам алхамаар дагаж мөрдөхийг танд зөвлөж байна.
Адрианы хичээлийг дуусгасны дараа та Pi дээр бидний туршилтыг явуулахад бэлэн OpenCV виртуал орчинтой байх ёстой.
Виртуал орчин руугаа ороод OpenCV 3 -ийг зөв суулгасан болохыг баталгаажуулцгаая.
Адриан системийн хувьсагчдыг зөв тохируулахын тулд шинэ терминал нээх бүртээ "эх сурвалж" гэсэн командыг ажиллуулахыг зөвлөж байна.
эх сурвалж ~/.профайл
Дараа нь виртуал орчинд орцгооё.
workon cv
Хэрэв та хүсэлтийн өмнөх текстийг (cv) харвал та cv виртуал орчинд байна.
(cv) pi@бөөрөлзгөнө: ~ $Адриан cv Python виртуал орчин нь бие даасан бөгөөд Raspbian Stretch -ийг татаж авахад оруулсан Python -ийн анхдагч хувилбараас хамгаалагдсан болохыг анхаарна уу. Тиймээс дэлхийн сайтын багц директор дахь Python багцууд нь cv виртуал орчинд байхгүй болно. Үүний нэгэн адил cv-ийн сайтын багцад суулгасан Python багцыг Python-ийн дэлхийн суулгацад ашиглах боломжгүй болно.
Одоо Python хэлмэрчээ оруулна уу:
питон
мөн 3.5 (эсвэл түүнээс дээш) хувилбарыг ажиллуулж байгаагаа баталгаажуулна уу
Орчуулагч дотор (">>>" гарч ирнэ) OpenCV номын санг импортлох:
cv2 импортлох
Хэрэв ямар ч алдааны мэдэгдэл гарахгүй бол OpenCV -ийг PYTHON VIRTUAL ORVIOR дээр зөв суулгасан болно.
Та мөн суулгасан OpenCV хувилбарыг шалгаж болно.
cv2._ хувилбар_
3.3.0 гарч ирэх ёстой (эсвэл ирээдүйд гаргах дээд зэргийн хувилбар). Дээрх Terminal PrintScreen нь өмнөх алхмуудыг харуулдаг.
Алхам 3: Камераа туршиж үзээрэй
OpenCV -ийг RPi -д суулгасны дараа таны камер зөв ажиллаж байгаа эсэхийг шалгахын тулд тест хийцгээе.
Таны Raspberry Pi дээр аль хэдийн PiCam суулгасан гэж би бодож байна.
Дараах Python кодыг IDE дээрээ оруулна уу.
np гэж numpy импортлох
cv2 cap = cv2. VideoCapture (0) cap.set (3, 640) # set Width cap.set (4, 480) # set Height while (True): ret, frame = cap.read () frame = cv2. flip (frame, -1) # Камерыг босоо байдлаар эргүүлэх саарал = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) cv2.imshow ('frame', frame) cv2.imshow ('саарал', саарал) k = cv2.waitKey (30) & 0xff if k == 27: # break cap -аас гарахын тулд 'ESC' товчийг дарна уу. Release () cv2.destroyAllWindows ()
Дээрх код нь таны PiCam -ээс үүсгэсэн видео урсгалыг авах бөгөөд хоёуланг нь BGR өнгө, Саарал горимд харуулна.
Би камераа угсрах замаар босоо байдлаар эргүүлснийг анхаарна уу. Хэрэв энэ нь тийм биш бол "эргүүлэх" командын мөрийг тайлбарлаж эсвэл устгана уу.
Та кодыг миний GitHub -аас татаж авах боломжтой: simpleCamTest.py
Гүйцэтгэхийн тулд тушаалыг оруулна уу:
python simpleCamTest.py
Хөтөлбөрийг дуусгахын тулд та гар дээрх [ESC] товчлуурыг дарах ёстой.
[ESC] товчлуурыг дарахаас өмнө видео цонхонд хулганаа дарна уу.
Дээрх зураг нь үр дүнг харуулж байна.
Зарим үйлдвэрлэгчид камерыг нээхийг оролдоход асуудал гарсан ("Баталгаажуулалт амжилтгүй болсон" алдааны мессеж). Хэрэв OpenCv суулгах явцад камер идэвхжээгүй байсан бол камерын драйверуудыг зөв суулгаагүй тохиолдолд ийм зүйл тохиолдож магадгүй юм. Үүнийг засахын тулд дараах тушаалыг ашиглана уу.
sudo modprobe bcm2835-v4l2
Та bcm2835-v4l2 файлыг /etc /modules файлын сүүлчийн мөрөнд нэмж оруулах боломжтой бөгөөд ингэснээр драйвер ачаалах үед ачаалагдах болно.
OpenCV-ийн талаар илүү ихийг мэдэхийн тулд та зааврыг дагаж болно: loading -video-python-opencv-tutorial
Алхам 4: Нүүр илрүүлэх
Нүүр таних хамгийн үндсэн ажил бол мэдээж "Нүүр илрүүлэх" юм. Аливаа зүйлийн өмнө та нүүрээ танихын тулд "барих" ёстой (1 -р үе шат), ирээдүйд авах шинэ нүүртэй (3 -р үе) харьцуулахад.
Нүүр царай (эсвэл аливаа объектыг) илрүүлэх хамгийн түгээмэл арга бол "Haar Cascade ангилагч" -ыг ашиглах явдал юм.
Haar функцэд суурилсан каскад ангилагч ашиглан обьект илрүүлэх нь 2001 онд Пол Виола, Майкл Жонс нарын санал болгосон "Энгийн шинж чанаруудыг сайжруулсан каскад ашиглан объектыг хурдан илрүүлэх" санал болгосон үр дүнтэй объект илрүүлэх арга юм. каскадын функцийг олон эерэг ба сөрөг зургуудаас сургадаг. Дараа нь бусад зурган дээрх объектуудыг илрүүлэхэд ашигладаг.
Энд бид нүүр таних төхөөрөмжтэй ажиллах болно. Анхандаа алгоритмд ангилагчийг сургахын тулд маш олон эерэг зураг (нүүрний зураг) болон сөрөг зураг (нүүргүй зураг) хэрэгтэй. Дараа нь бид үүнээс онцлог шинж чанарыг олж авах хэрэгтэй. Сайн мэдээ бол OpenCV нь сургагч, детектортой хамт ирдэг. Хэрэв та машин, онгоц гэх мэт аливаа объектод өөрийн ангилагчийг сургахыг хүсч байвал OpenCV ашиглан үүнийг үүсгэж болно. Түүний бүрэн мэдээллийг энд өгөв: Каскад ангилагчийн сургалт.
Хэрэв та өөрийн ангилагч үүсгэхийг хүсэхгүй байгаа бол OpenCV нь нүүр, нүд, инээмсэглэл гэх мэт урьдчилан бэлтгэгдсэн олон ангилагчийг агуулдаг бөгөөд эдгээр XML файлуудыг haarcascades директороос татаж авах боломжтой.
Хангалттай онол, OpenCV -тэй нүүр илрүүлэгч бүтээцгээе!
Миний GitHub дээрээс faceDetection.py файлыг татаж аваарай.
np гэж numpy импортлох
cv2 faceCascade = cv2. CascadeClassifier ('Cascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) cap.set (3, 640) # set Width cap.set (4, 480) # set High байхад True: ret, img = cap.read () img = cv2.flip (img, -1) саарал = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) 20, 20)) (x, y, w, h) нүүрний хувьд: cv2. Тэгш өнцөгт (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] cv2.imshow ('видео', img) k = cv2.waitKey (30) & 0xff if k == 27: # break cap -аас гарахын тулд 'ESC' дарна уу. Release () cv2.destroyAllWindows ()
Дээр дурдсан кодын мөрүүд нь Python болон OpenCV -ийг ашиглан нүүрээ тодорхойлоход л хангалттай гэдэгт итгээрэй.
Камерыг туршихад ашигласан сүүлийн кодтой харьцуулж үзэхэд цөөн хэдэн хэсэг нэмэгдсэн болохыг ойлгох болно. Доорх мөрийг анхаарна уу.
faceCascade = cv2. CascadeClassifier ('Cascades/haarcascade_frontalface_default.xml')
Энэ бол "ангилагч" -ыг ачаалж буй мөр юм (энэ нь таны төслийн лавлах дор "Cascades/" нэртэй директорт байх ёстой).
Дараа нь бид камераа байрлуулж, давталтын дотор оролтын видеогоо саарал өнгөний горимд ачаална (өмнө нь харж байсан шиг).
Одоо бид ангилагчийн функцийг дуудаж, масштабын хүчин зүйл, хөршүүдийн тоо, илрүүлсэн нүүрний хамгийн бага хэмжээ гэх мэт маш чухал параметрүүдийг дамжуулах ёстой.
нүүр = faceCascade.detectMultiScale (саарал, масштаб Хүчин зүйл = 1.2, минХөршүүд = 5, мин Хэмжээ = (20, 20))
Хаана,
- саарал бол оролтын саарал өнгийн дүрс юм.
- scaleFactor нь зургийн масштаб бүрт зургийн хэмжээ хэр их хэмжээгээр буурч байгааг тодорхойлдог параметр юм. Үүнийг масштабтай пирамид үүсгэхэд ашигладаг.
- minNeighbors бол нэр дэвшигч тэгш өнцөгтийг хадгалахын тулд хэдэн хөрштэй байх ёстойг тодорхойлох параметр юм. Илүү их тоо нь хуурамч эерэг үр дүнг өгдөг.
- minSize бол нүүр царай гэж тооцогдох тэгш өнцөгтийн хамгийн бага хэмжээ юм.
Функц нь зураг дээрх нүүр царайг илрүүлэх болно. Дараа нь бид зурган дээрх нүүрийг жишээлбэл цэнхэр тэгш өнцөгт ашиглан "тэмдэглэх" ёстой. Үүнийг кодын энэ хэсэгт хийж гүйцэтгэнэ:
(x, y, w, h) нүүрний хувьд:
cv2. тэгш өнцөгт (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]
Хэрэв царай олдвол илэрсэн нүүрний байрлалыг зүүн дээд булан (x, y), өргөн нь "w", өндөр нь "h" байх = => (x, y, w, h). Дээрх зургийг үзнэ үү.
Эдгээр байршлыг олж авсны дараа бид нүүрэнд "ROI" (тэгш өнцөгт зурсан) үүсгэж, үр дүнг imshow () функцээр танилцуулж болно.
Дээрх python скриптийг өөрийн python орчинд Rpi терминал ашиглан ажиллуулна уу.
python faceDetection.py
Үр дүн:
Та мөн "нүд илрүүлэх" эсвэл бүр "инээмсэглэл илрүүлэх" ангилагчийг оруулж болно. Ийм тохиолдолд та нүүрний хүрд дотор ангилагчийн функц, тэгш өнцөгт зурах үйлдлийг оруулах болно, учир нь нүүрний гаднах нүд, инээмсэглэлийг илрүүлэх нь утгагүй болно.
Pi дээр хэд хэдэн ангилагчийг нэг кодтой байлгах нь энэхүү удаашруулах аргыг (HaarCascades) маш их тооцоолох хүч ашигладаг бол боловсруулалтыг удаашруулна гэдгийг анхаарна уу. Ширээний компьютер дээр үүнийг ажиллуулах нь илүү хялбар байдаг.
Миний GitHub дээрээс та бусад жишээг олох болно.
faceEyeDetection.py
faceSmileDetection.py
faceSmileEyeDetection.py
Дээрх зурган дээр та үр дүнг харж болно.
Та мөн нүүрний илрүүлэлтийг илүү сайн ойлгохын тулд доорх зааврыг дагаж болно.
Haar Cascade объект илрүүлэх нүүр ба нүд OpenCV Python заавар
Алхам 5: Мэдээлэл цуглуулах
Юуны өмнө би Рамиз Ражад зурган дээрх нүүр таних чиглэлээр хийсэн гайхалтай ажилд нь талархах ёстой.
OPENCV, PYTHON ашиглан нүүр царайгаа таних нь: эхлэгчдийн гарын авлага
мөн Анирбан Кар, видео ашиглан маш дэлгэрэнгүй заавар боловсруулсан болно.
Нүүр царай таних - 3 хэсэг
Хоёр хичээлийг хоёуланг нь үзэхийг танд зөвлөж байна.
Үүнийг хэлээд төслийнхөө эхний үе шатыг эхлүүлье. Энд хийх зүйл бол сүүлчийн алхамаас эхэлж байна (Нүүр илрүүлэх), бид зүгээр л мэдээллийн бааз үүсгэх болно, тэнд бид id тус бүрт, саарал өнгийн гэрэл зургийн бүлгийг нүүр танихад ашигладаг хэсгийг хадгалах болно.
Нэгдүгээрт, төслөө боловсруулж буй лавлах үүсгэ, жишээлбэл FacialRecognitionProject:
mkdir FacialRecognitionProject
Энэ лавлахад манай төсөлд зориулж бүтээх 3 питон скриптээс гадна бид нүүрний ангилагчийг хадгалсан байх ёстой. Та үүнийг миний GitHub дээрээс татаж авах боломжтой: haarcascade_frontalface_default.xml
Дараа нь бид нүүрний дээжээ хадгалах дэд директор үүсгэж, үүнийг "мэдээллийн сан" гэж нэрлэнэ үү.
mkdir мэдээллийн сан
Мөн кодыг миний GitHub -аас татаж аваарай: 01_face_dataset.py
cv2 импортлох
import os cam = cv2. VideoCapture (0) cam.set (3, 640) # set video width cam.set (4, 480) # set video height face_detector = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') # Хүн бүрт, нэг тоон нүүрний id оруулна уу face_id = оролт ('\ n хэрэглэгчийн id төгсгөлийг дарна уу ==>') хэвлэх ("\ n [INFO] Нүүрний зураг авах ажиллагааг эхлүүлж байна. Камерыг хараад хүлээнэ үү …") # Хувь хүний түүвэрлэлтийн тоог тоолох тоог эхлүүлнэ. = 0 байхад (Үнэн): ret, img = cam.read () img = cv2.flip (img, -1) # видео дүрсийг босоо байдлаар эргүүлэх саарал = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) царай = face_detector.detectMultiScale (саарал, 1.3, 5) (x, y, w, h) нүүрний хувьд: cv2. тэгш өнцөгт (img, (x, y), (x+w, y+h), (255, 0, 0), 2) count + = 1 # Барьсан зургийг cv2.imwrite өгөгдлийн багц хавтсанд хадгална уу ("мэдээллийн сан/Хэрэглэгч." + str (face_id) + '.' + str (тоо) + ".jpg", саарал [y: y + h, x: x+w]) cv2.imshow ('image', img) k = cv2.waitKey (100) & 0xff # k == 27: break elif count> = 30: 'ESC' товчийг дарж видеогоос гарна уу. # 30 нүүрний дээж аваад видео завсарлагаа зогсоо # Do ab Энэ нь цэвэрлэгээний хэвлэх ("\ n [INFO] Хөтөлбөрөөс гарч, цэвэрлэх зүйлс") cam.release () cv2.destroyAllWindows ()
Код нь бидний нүүр царай таних кодтой маш төстэй юм. Бидний нэмсэн зүйл бол хэрэглэгчийн id -ийг авах "оруулах тушаал" байсан бөгөөд энэ нь бүхэл тоо байх ёстой (1, 2, 3 гэх мэт).
face_id = оролт ('\ n хэрэглэгчийн id оруулна уу ==>> дарна уу)
Баригдсан хүрээ тус бүрийн хувьд бид үүнийг "мэдээллийн сан" лавлахад файл хэлбэрээр хадгалах ёстой.
cv2.imwrite ("мэдээллийн сан/Хэрэглэгч." + str (face_id) + '.' + str (тоо) + ".jpg", саарал [y: y + h, x: x + w])
Дээрх файлыг хадгалахын тулд та "os" номын санг импортолсон байх ёстой гэдгийг анхаарна уу. Файл бүрийн нэр бүтцийг дагах болно.
Хэрэглэгч.face_id.count.jpg
Жишээлбэл, face_id = 1 -тэй хэрэглэгчийн хувьд өгөгдлийн сан/ лавлах дээрх 4 -р жишээ файл дараах байдалтай байх болно.
Хэрэглэгч.1.4.jpg
миний Pi дээрх дээрх зураг дээр үзүүлсэн шиг. Миний код дээр id бүрээс 30 дээж авч байна. Та үүнийг сүүлчийн "элиф" дээр өөрчилж болно. Дээжийн тоог нүүрний дээж авах гогцоог таслахад ашигладаг.
Python скриптийг ажиллуулаад цөөн хэдэн Ids -ийг аваарай. Та шинэ хэрэглэгчийг нэгтгэх (эсвэл аль хэдийн байгаа зургуудыг өөрчлөх) хүсэх болгондоо скриптийг ажиллуулах ёстой.
Алхам 6: Дасгалжуулагч
Энэ хоёр дахь үе шатанд бид мэдээллийн сангаасаа бүх хэрэглэгчийн өгөгдлийг авах ёстой бөгөөд OpenCV танигчийг "сургагч" болгох ёстой. Үүнийг OpenCV -ийн тодорхой функцээр шууд хийдэг. Үр дүн нь "trainer/" директор дээр хадгалагдах болно.yml файл болно.
Тиймээс, бэлтгэгдсэн өгөгдлийг хадгалах дэд директор үүсгэж эхэлье.
mkdir дасгалжуулагч
Миний GitHub -аас хоёр дахь питон скриптийг татаж авах: 02_face_training.py
cv2 импортлох
PIL -ээс np гэж импортлох Зураг импортлох os # Path of path image database path = 'dataset' танигч = cv2.face. LBPHFaceRecognizer_create () detector = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml"); getImagesAndLabels (зам): зураг, шошго авахын тулд # функц: PIL_img = Image.open (imagePath).convert ('L') # үүнийг саарал өнгөтэй болгон хувиргах img_numpy = np.array (PIL_img, 'uint8') id = int (os.path.split (imagePath) [-1]. хуваах (".") [1]) нүүр = detector.detectMultiScale (img_numpy) (x, y, w, h) нүүрний хувьд: faceSamples.append (img_numpy [y: y+h, x: x+w]) ids.append (id) return faceSamples, ids хэвлэх ("\ n [INFO] Сургалтын нүүр царай. Хэдэн секунд болно. Хүлээгээрэй …") нүүр, ids = getImagesAndLabels (зам) танигч.трэйн (нүүр, np.array (ids)) # Загварыг сургагч/дасгалжуулагч болгон хадгалах. iml танигч ("\ n [INFO] {0} бэлтгэгдсэн нүүр царай. Хөтөлбөрөөс гарч байна". формат (len (np.unique (ids)))))
Та Rpi дээр PIL номын сан суулгасан эсэхээ баталгаажуулна уу. Үгүй бол доорх тушаалыг Терминал дээр ажиллуулна уу.
pip дэр суулгах
Бид OpenCV багцад багтсан LBPH (LOCAL BINARY PATTERNS HISTOGRAMS) нүүр танигчийг танигч болгон ашиглах болно. Бид үүнийг дараах мөрөнд хийдэг.
танигч = cv2.face. LBPHFaceRecognizer_create ()
"GetImagesAndLabels (зам)" функц нь "багц/" лавлах дээрх бүх зургийг авах бөгөөд "Ids" ба "царай" гэсэн 2 массивыг буцаана. Эдгээр массивыг оролт болгон бид "танигчдаа сургах" болно:
таних. галт тэрэг (нүүр, таних тэмдэг)
Үүний үр дүнд "trainer.yml" нэртэй файл бидний өмнө үүсгэсэн сургагч багшийн санд хадгалагдах болно.
Ингээд л боллоо! Баталгаажуулахын тулд харуулсан хамгийн сүүлийн хэвлэлийн мэдэгдлийг бид бэлтгэсэн Хэрэглэгчийн нүүрний тоог оруулав.
Та 1 -р үе шатыг хийх болгондоо 2 -р үе шатыг ажиллуулах ёстой
Алхам 7: Танигч
Одоо бид төслийнхөө эцсийн шатанд орлоо. Энд бид камер дээрээ шинэхэн царай авах болно, хэрэв энэ хүн өмнө нь нүүрээ барьж, сургаж байсан бол танигч нь таних тэмдгийг энэ тоглолтонд хэр итгэлтэй байгааг харуулсан "урьдчилсан таамаглал" хийх болно.
Гурав дахь шатны python скриптийг миний GitHub: 03_face_recognition.py дээрээс татаж авцгаая.
cv2 импортлох
np импортлох os танигч = cv2.face. LBPHFaceRecognizer_create () tanınir.read ('сургагч багш/trainer.yml') cascadePath = "haarcascade_frontalface_default.xml" faceCascade = cv2. CascadeClassifier (cascadePath) байдлаар импортлох. font = cv2. FONT_HERSHEY_SIMPLEX # idici id id = 0 # ids -тэй холбоотой нэрс: жишээ ==> Marcelo: id = 1, etc names = ['None', 'Marcelo', 'Paula', 'Ilza', 'Z ',' W '] # Бодит цагийн видео бичлэг хийх камерыг эхлүүлэх ба эхлүүлэх = cv2. нүүр царай гэж хүлээн зөвшөөрөгдөх minW = 0.1*cam.get (3) minH = 0.1*cam.get (4) байхад True: ret, img = cam.read () img = cv2.flip (img, -1) # (X, y), w, h) нүүрэн дээр: cv2.rectangle (img, (x, y), (x+w, y+h), (0, 255, 0), 2) id, өөртөө итгэх итгэл = танигч. y: y+h, x: x+w]) # Итгэл үнэмшил нь түүнээс бага байгаа эсэхийг шалгаарай 100 ==> "0" нь төгс тохирох эсэхийг (итгэлтэй байдал <100): id = names [id] итгэлтэй = "{0}% ".format (дугуй (100 - итгэл)) өөр: id =" үл мэдэгдэх "итгэл =" {0}%". формат (дугуй (100 - conf idence)) cv2.putText (img, str (id), (x+5, y-5), фонт, 1, (255, 255, 255), 2) cv2.putText (img, str (итгэлтэй), (x+5, y+h-5), фонт, 1, (255, 255, 0), 1) cv2.imshow ('камер', img) k = cv2.waitKey (10) & 0xff # 'ESC' товчийг дарна уу. k == 27 байвал видеогоос гарахын тулд: break # Бага зэрэг цэвэрлэгээ хий ("\ n [INFO] Exiting Program and cleanup stuff") cam.release () cv2.destroyAllWindows ()
Бид энд шинэ массив оруулж байгаа тул дугаарлагдсан id -ийн оронд "нэр" -ийг харуулах болно.
нэр = ['Байхгүй', 'Марсело', 'Паула', 'Илза', 'Z', 'W']
Тиймээс, жишээ нь: Марсело id = 1 -тэй хэрэглэгч байх болно; Паула: id = 2 гэх мэт.
Дараа нь бид haasCascade ангилагчаар өмнө нь хийж байсан нүүрээ илрүүлэх болно. Илэрсэн царайтай бол бид дээрх кодын хамгийн чухал функцийг дуудаж болно.
id, өөртөө итгэх итгэл = танигч. таамаглах (нүүрний саарал хэсэг)
Танигч.predict () нь нүүрний авсан хэсгийг шинжилж параметр болгон авч, түүний эзэмшигчийг буцааж өгөх бөгөөд энэ нь танигч энэ тоглолтонд хэр итгэлтэй байгааг харуулна.
Итгэлцлийн индексийг төгс тохирох гэж үзвэл "тэг" болно
Эцэст нь хэрэв танигч нүүр царайг урьдчилан таамаглаж чадвал бид дүрсэн дээр магадлалтай id бүхий текстийг тавьдаг бөгөөд "магадлал" нь хичнээн хувь нь таарч байгаа вэ ("магадлал" = 100 - итгэлийн индекс). Үгүй бол нүүрэндээ "мэдэхгүй" гэсэн шошго тавьдаг.
Үр дүн бүхий-g.webp
Дээрх зурган дээр би энэ төсөл дээр хийсэн зарим туршилтуудыг харуулсан бөгөөд танигч ажиллаж байгаа эсэхийг шалгахын тулд гэрэл зургийг ашигласан болно.
Алхам 8: Дүгнэлт
Урьдын адил энэ төсөл нь бусад хүмүүст электроникийн ертөнцөд аялахад нь тусална гэж найдаж байна!
Дэлгэрэнгүй мэдээлэл, эцсийн кодыг авахын тулд миний GitHub хадгалагч руу очно уу: OpenCV-Face-Recognition
Бусад төслүүдийн талаар MJRoBot.org миний блогоос үзнэ үү
"Нүүр царай автоматаар илрүүлэх болон нүүр таних бусад аргуудыг" судлах ирээдүйн зааварчилгааны доор.
Дэлхийн өмнөд хэсгээс мэндчилгээ дэвшүүлье!
Дараагийн зааварчилгаагаараа уулзацгаая!
Баярлалаа, Марсело
Зөвлөмж болгож буй:
Бодит цагийн цагийн модулийг (DS3231) хэрхэн ашиглах вэ: 5 алхам
Бодит цагийн цагны модулийг (DS3231) хэрхэн ашиглах вэ: DS3231 бол өртөг багатай, туйлын нарийвчлалтай I2C бодит цаг (RTC) бөгөөд температурыг нөхсөн болор осциллятор (TCXO), болортой. Төхөөрөмж нь батерейны оролттой бөгөөд үндсэн хүчдэлийн үед цагийг зөв хэмждэг
Нууц тасалгаатай нүүр таних толь: 15 алхам (зурагтай)
Нууц тасалгаатай нүүрний таних толь: Өгүүллэг, кино гэх мэт зүйлд ашигладаг үргэлж бүтээлч нууц тасалгаанууд надад үргэлж сонирхолтой байдаг. Тиймээс, "Нууц тасалгаа" уралдааныг үзээд би энэ санааг өөрөө туршиж үзээд энгийн толь хийхээр шийдлээ
EM-ийн ул мөрийг ашиглан бодит цагийн төхөөрөмжийг таних: 6 алхам
EM-ийн ул мөрийг ашиглан бодит цагийн төхөөрөмжийг таних: Энэ төхөөрөмж нь янз бүрийн электрон төхөөрөмжийг EM дохиогоор нь ангилах зорилготой юм. Өөр өөр төхөөрөмжийн хувьд тэд өөр өөр EM дохиог ялгаруулдаг. Particle ашиглан электрон төхөөрөмжийг танихын тулд бид IoT шийдлийг боловсруулсан болно
Нүүр таних ба таних - OpenCV Python болон Arduino ашиглан Arduino Face ID: 6 алхам
Нүүр таних ба таних | OpenCV Python болон Arduino ашиглан Arduino Face ID: Нүүр царай таних нь орчин үеийн гар утасны хамгийн чухал онцлогуудын нэг юм. Тиймээс надад " Arduino төслийнхөө нүүр царайг таних боломжтой юу " хариулт нь тийм … Миний аялал дараах байдлаар эхэлсэн: Алхам 1: Бидэнд хандах
RaspberryPi-4: 6 алхам дээр бодит цагийн нүүр илрүүлэх (зурагтай)
RaspberryPi-4 дээрх бодит цагийн нүүрний илрүүлэлт: Энэхүү зааварчилгаанд бид Shunyaface номын санг ашиглан Shunya O/S ашиглан Raspberry Pi 4 дээр нүүрний бодит илрүүлэлтийг хийх болно. Та энэ зааврыг дагаж RaspberryPi-4 дээр 15-17-ийн илрүүлэх хүрээний хурдыг авах боломжтой