Mundarija:
- 1 -qadam: Anaconda -ni o'rnating
- 2 -qadam: ochiq rezyumelar paketini yuklab oling
- 3 -qadam: Atrof -muhit o'zgaruvchilarini o'rnating
- 4 -qadam: Tasdiqlash uchun test
- 5 -qadam: Yuzni aniqlash uchun kod yarating
- 6 -qadam: Ma'lumotlar to'plamini yaratish uchun kod yarating
- 7 -qadam: Recognizer -ni o'rgatish uchun kod yarating
- 8 -qadam: Yuz va natijani tanib olish uchun kod yarating
Video: Yuzni aniqlash+tanib olish: 8 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
Bu kameradan OpenCV yordamida yuzni aniqlash va tanib olishning oddiy namunasidir. QAYD: SENSOR KONKURSI UCHUN LOYIHA QILDIM VA TANISH YUZLARINI SENSOR QILGAN KAMERADAN SHUNDAN MAKSADIMIZ, Bu sessiyada 1. Anaconda -ni o'rnating 2. Ochiq rezyumelar paketini yuklab oling 3. Atrof -muhit o'zgaruvchilarini o'rnating 4. 5 -ni tasdiqlash uchun test. Yuzni aniqlash uchun kod yarating 6. Ma'lumotlar to'plamini yaratish uchun kod yarating 7. Tanishlarni o'rgatish uchun kod yarating 8. Yuzlarni tanib olish uchun kod yarating & Natija.
1 -qadam: Anaconda -ni o'rnating
Anaconda, aslida, NumPy, Pandas, IPython daftarchasi va boshqalar kabi foydali paketlar bilan ta'minlangan, yaxshi qadoqlangan Python IDE. Ilmiy jamoaning hamma joylarida tavsiya qilingan ko'rinadi. O'rnatish uchun Anaconda -ni tekshiring.
2 -qadam: ochiq rezyumelar paketini yuklab oling
Birinchidan, to'liq OpenCV paketini yuklab olish uchun OpenCV rasmiy saytiga o'ting. O'zingizga yoqqan versiyani tanlang (2.x yoki 3.x). Men Python 2.x va OpenCV 2.x -da bo'laman - asosan OpenCV -Python darsliklari shu asosda tuzilgani uchun.
Menimcha, men paketni (asosan papkani) to'g'ridan -to'g'ri F diskimga chiqarib oldim. (F: / opencv).
3 -qadam: Atrof -muhit o'zgaruvchilarini o'rnating
Cv2.pyd faylini nusxalash va joylashtirish
Anaconda sayt-paketlar katalogida (masalan, F: / Program Files / Anaconda2 / Lib / site-packages) siz import qilishingiz mumkin bo'lgan Python paketlari mavjud. Bizning maqsadimiz cv2.pyd faylini ushbu katalogga nusxalash va joylashtirish (shuning uchun biz cv2 importini Python kodlarimizda ishlatishimiz mumkin).
Buning uchun cv2.pyd faylini nusxalash …
Ushbu OpenCV katalogidan (kompyuterning bosh qismi biroz boshqacha bo'lishi mumkin):
# Python 2.7 va 64-bitli mashina: F: / opencv / build / python / 2.7 / x64# Python 2.7 va 32-bitli mashina: F: / opencv / build / python / 2.7 / x84
Bu Anaconda katalogiga (bosh qismi kompyuteringizda biroz boshqacha bo'lishi mumkin):
F: / Program Files / Anaconda2 / Lib / site-packages
Ushbu qadamni bajargandan so'ng, endi Python kodida import cv2 dan foydalanishimiz mumkin bo'ladi. Ammo, biz hali ham FFMPEG (video kodek) ni ishga tushirish uchun biroz ko'proq ish qilishimiz kerak (bizga videolarni qayta ishlash kabi ishlarni bajarish uchun).
"Mening kompyuterim" (yoki Windows 8.1 da "Bu kompyuter")-sichqonchaning o'ng tugmasi bilan bosing-Xususiyatlar-> "Kengaytirilgan" yorlig'ini-> "Atrof-muhit o'zgaruvchilari …" tugmachasini bosing. Yangi foydalanuvchi o'zgaruvchisini qo'shing. OpenCV-ga ishora qilish uchun (32-bitli tizim uchun x86 yoki 64-bitli tizim uchun x64.) Men hozirda 64-bitli mashinadaman.
32-bitOPENCV_DIRC: / opencv / build / x86 / vc12
64-bitOPENCV_DIRC: / opencv / build / x64 / vc12
%OPENCV_DIR %\ bin ni foydalanuvchi o'zgaruvchi PATH ga qo'shing.
Masalan, mening PATH foydalanuvchi o'zgaruvchisi shunday ko'rinadi …
Oldin:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Skriptlar
Keyin:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Skriptlar;%OPENCV_DIR%\ bin
Mana, biz tugatdik! FFMPEG foydalanishga tayyor!
4 -qadam: Tasdiqlash uchun test
Biz buni Anaconda (Spyder IDE orqali) qila olamizmi yoki yo'qligini tekshirishimiz kerak:
- OpenCV paketini import qiling
- FFMPEG yordam dasturidan foydalaning (videolarni o'qish/yozish/qayta ishlash uchun)
1 -sinov: OpenCV -ni import qila olamizmi?
Anaconda endi OpenCV-Python paketini (cv2) import qila olishiga ishonch hosil qilish uchun, IPython konsolida ularni chiqaring:
cv2 import qilish
cv2._ versiyasini chop eting
Agar cv2 to'plami xatosiz ok import qilinsa va cv2 versiyasi chop etilsa, biz hammamiz yaxshi!
2 -sinov: FFMPEG kodekidan foydalanishimiz mumkinmi?
Namuna joylashtiring
kirish_video.mp4
katalogdagi video fayl. Biz qila olamizmi yoki yo'qligini tekshirmoqchimiz:
- bu.mp4 video faylini o'qing va
- yangi videofayl yozing (.avi yoki.mp4 bo'lishi mumkin)
Buning uchun bizda test python kodi bo'lishi kerak, uni test.py deb nomlang. Namuna bilan bir xil katalogga joylashtiring
kirish_video.mp4
fayl
Bu nima
test.py
o'xshash bo'lishi mumkin (Izoh: sharhlar sohasidagi Pit va Uorrenning takliflari uchun katta rahmat - men o'zimning asl test kodimni uning o'rniga qo'ydim - iltimos, buni o'zingiz sinab ko'ring va bu yaxshiroq ishlayaptimi, bizga xabar bering):
cv2 import qilish
cap = cv2. VideoCapture ("input_video.mp4") cap.isOpened () # True = videoni muvaffaqiyatli o'qing. Yolg'on - videoni o'qimaslik. fourcc = cv2. VideoWriter_fourcc (*'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) print.isOpened () # True = videoni muvaffaqiyatli yozish. Yolg'on - videoni yozib bo'lmaydi. cap.release () out.release ()
Bu test juda muhim. Agar siz video fayllarni qayta ishlashni xohlasangiz, Anaconda / Spyder IDE FFMPEG (video kodek) dan foydalanishiga ishonch hosil qilishingiz kerak. Uni ishga tushirishim uchun bir necha kun kerak bo'ldi. Ammo umid qilamanki, sizga kamroq vaqt kerak bo'ladi!:) Eslatma: Anaconda Spyder IDE -dan foydalanganda yana bir muhim maslahat. Joriy ishchi katalogini (CWD) tekshirganingizga ishonch hosil qiling !!!
5 -qadam: Yuzni aniqlash uchun kod yarating
Maqsad
Bu sessiyada,
- Haar xususiyatlariga asoslangan kaskad tasniflagichlari yordamida yuzni aniqlash asoslarini ko'ramiz
- Biz buni ko'zni aniqlash va boshqalar uchun uzaytiramiz
OpenCV-da Haar-kaskadni aniqlash
Bu erda biz aniqlash bilan shug'ullanamiz. OpenCV allaqachon yuz, ko'z, tabassum va boshqalar uchun oldindan tayyorlangan ko'plab tasniflagichlarni o'z ichiga oladi. Bu xml fayllari opencv/data/haarcascades/papkasida saqlanadi. Keling, OpenCV yordamida yuz va ko'z detektorini yarataylik, avval kerakli XML tasniflagichlarini yuklashimiz kerak. Keyin biz kiritgan tasvirni (yoki videoni) kulrang rejimda yuklang YOKI biz kameradan foydalanishimiz mumkin (real vaqtda yuzni aniqlash uchun)
numpy ni np sifatida import qilish
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/ha/ha/.xml ') cap = cv2. VideoCapture (0) 1: ret, img = cap.read () grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) yuzlari = face_cascade.detectMultiScale (kulrang, 1,5, 5) uchun x, y, w, h) yuzlarida: cv2. to'rtburchak (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = kul [y: y +h, x: x+w] roi_color = img [y: y+h, x: x+w] ko'zlar = eye_cascade.detectMultiScale (roi_gray) uchun roi_color, (ex, ey), (ex +ew, ey +eh), (0, 255, 0), 2) "topilgan" +str (len (yuzlar)) +"yuz (lar)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff if k == 27: break cap.release () cv2.destroyAllWindows ()
6 -qadam: Ma'lumotlar to'plamini yaratish uchun kod yarating
Biz yuzni taniymiz, shuning uchun sizga yuz tasvirlari kerak bo'ladi! Siz o'z ma'lumotlar bazangizni yaratishingiz yoki mavjud ma'lumotlar bazalaridan birini boshlashingiz mumkin, https://face-rec.org/databases/ sizga zamonaviy ko'rinishni beradi. Uchta qiziqarli ma'lumotlar bazasi (tavsif qismlari https://face-rec.org saytidan olingan):
- AT&T ma'lumotlar bazasi
- Yel yuzaki ma'lumotlar bazasi A.
- Yel kengaytirilgan ma'lumotlar bazasi B.
BU YERDA men o'z ma'lumotlar bazamdan foydalanmoqdaman …. Kod yordamida.
numpy ni np sifatida import qilish
import cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) id = raw_input ('foydalanuvchi identifikatorini kiriting') sampleN = 0; while 1: ret, img = cap.read () kulrang = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) yuzlar = face_cascade.detectMultiScale (kulrang, 1.3, 5) yuzlarida (x, y, w, h): sampleN = namuna N+1; cv2.imwrite ("F:/Program Files/projects/face_rec/facesData/User."+str (id)+"."+str (sampleN)+".jpg", kulrang [y: y+h, x: x+w]) cv2. to'rtburchak (img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img'), img) cv2.waitKey (1), agar sampleN> 20: cap.release () cv2.destroyAllWindows ()
7 -qadam: Recognizer -ni o'rgatish uchun kod yarating
O'quv majmuasini tayyorlash funktsiyasini yarating
Endi biz funktsiyani aniqlaymiz
getImagesWithID (yo'l)
bu tasvir ma'lumotlar bazasiga mutlaq yo'lni kirish argumenti sifatida oladi va 2 ta ro'yxatni qaytaradi, bittasida aniqlangan yuzlar, ikkinchisida bu yuz uchun tegishli yorliq bor. Misol uchun, agar yuzlar ro'yxatidagi ith indeksi ma'lumotlar bazasidagi 5 -shaxsni ifodalasa, teglar ro'yxatidagi mos keladigan joy 5 ga teng.
Endi ma'lumotlar to'plamining yuzlarini (6 -qadamda yaratilgan) quyida berilgan kod yordamida.yml faylga aylantiring:
import qilish os
PIL importidan cv2 ni np import sifatida import qilish Image # Yuzni tanib olish uchun biz LBPH yuzni tanib oluvchi = cv2.createLBPHFaceRecognizer (); path = "F:/Program Files/projects/face_rec/facesData" def getImagesWithID (path): imagePaths = [os.path.join (path, f) in f in os.listdir (path)] # print image_path #getImagesWithID (path) yuzlari = ID = =] imagePath -dagi ImagePaths uchun: # Rasmni o'qing va kulrang yuzlarga aylantiringImg = Image.open (imagePath).convert ('L') faceNP = np.array (yuzlarImg, 'uint8') # Rasm ID yorlig'ini oling = int (os.path.split (imagePath) [-1]. Split (".") [1]) # Rasmdagi yuzni aniqlang. Yuzlar (ID) cv2.imshow ("Ta'lim uchun yuzlar qo'shish", faceNP) cv2.waitKey (10) np.array (identifikatorlar) ni qaytaradi, idlar, yuzlar = getImagesWithID (yo'l) tanib oluvchi.train (yuzlar, idlar) tanib oluvchi.save ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()
bu kod yordamida barcha yuz ma'lumotlar to'plami bitta.yml faylga aylantirilgan ….. yo'lning joylashuvi ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml")
8 -qadam: Yuz va natijani tanib olish uchun kod yarating
Guyzz - bu sizning veb -kamerangiz yordamida yuzlarni taniy oladigan kodni yaratishimiz mumkin bo'lgan oxirgi qadam. BU QADAMDA IJROLANGAN IKKI FAOLIYAT bor …. 1. videoni kameradan olish 2. uni.yml faylingiz bilan solishtiring
npimport cv2 face_cascade = cv2 sifatida import qilish. rec.load ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") id = 0 shrift = cv2.cv. InitFont (cv2.cv. CV_FONT_HERSHEY_COMPLEX_SMALL, 5, 1, 0, 4) 1 da: ret, img = cap.read () kulrang = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) yuzlar = face_cascade.detectMultiScale (kulrang, 1,5, 5) yuzlarida (x, y, w, h): cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf = rec.predict (kulrang [y: y+h, x: x+w]) agar (id == 2): id == 1 bo'lsa id = "alok": id == 3 bo'lsa id = "alok": id == 4 bo'lsa id = "anjali": id = "Gaurav" agar id = bo'lsa = 5: id = 'rahul' agar id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y+h), shrift, 255) cv2.imshow ('img', img) agar cv2.waitKey (1) == ord ('q'): cap.release ()
cv2.destroyAllWindows ()
Va nihoyat natija sizning ko'zingiz oldida bo'ladi ……. siz zip -faylni havolaning ostidan ham yuklab olishingiz mumkin: Kodlarni yuklab olish uchun shu erni bosing Shunday qilib, biz bu ko'rsatmada OpenCV yordamida yuzni aniqlash+tanib olish vazifasini bajardik. Bu o'rgatuvchi kabi ….. plzzz menga obuna bo'ling va menga ovoz bering …. rahmat do'stlar:)
Tavsiya:
EM izlari yordamida real vaqtda qurilmani tanib olish: 6 qadam
EM izlari yordamida real vaqtda qurilmani tanib olish: Bu qurilma turli elektron qurilmalarni EM signallariga ko'ra tasniflashga mo'ljallangan. Turli xil qurilmalarda ular chiqaradigan turli xil EM signallari mavjud. Biz zarrachalar yordamida elektron qurilmalarni aniqlash uchun IoT yechimini ishlab chiqdik
Opencv yuzini aniqlash, o'qitish va tanib olish: 3 qadam
Opencv yuzini aniqlash, o'qitish va tanib olish: OpenCV - bu kompyuterni ko'rishning ochiq manbali kutubxonasi bo'lib, u xiralashtirish, tasvirni aralashtirish, tasvirni yaxshilash, shuningdek video sifati, chegara va hokazo kabi tasvirni qayta ishlashning asosiy vazifalarini bajarishda juda mashhur. buni tasdiqlaydi
Yulduzlarni kompyuter ko'rish (OpenCV) yordamida tanib olish: 11 qadam (rasmlar bilan)
Yulduzlarni kompyuter ko'rish (OpenCV) yordamida tanib olish: Bu ko'rsatma sizga tasvirdagi yulduzcha naqshlarini avtomatik aniqlash uchun kompyuterni ko'rish dasturini qanday yaratishni tasvirlab beradi. Usul OpenCV (Open Source Computer Vision) kutubxonasidan foydalanib, o'qitiladigan HAAR kaskadlari to'plamini yaratadi
Amalda yuzni tanib olish: 21 qadam
Amalda yuzni tanib olish: Bu meni juda hayratga soladigan mavzu bo'lib, u meni uyqudan mahrum qiladi: Kompyuter ko'rish, ob'ektlar va odamlarni oldindan tayyorlangan model orqali aniqlash
MQTT yordamida ESP32 CAM yuzni tanib olish - AI-Thinker: 4 qadam
MQTT yordami bilan ESP32 CAM yuzini tanib olish | AI-Thinker: Assalomu alaykum! Men MQTT-ga ma'lumotlarni yuboradigan ESP CAM-ni tanib oladigan bo'lsam, loyihaning kodini baham ko'rishni xohlardim. Xo'sh, ehtimol, 7 soatdan keyin bir nechta kodli misollarni ko'rib chiqdim va nima ekanligini qidirib topdim, menda yakun bor