Mündəricat:
- Addım 1: BoM - Material Bill
- Addım 2: OpenCV 3 Paketinin Qurulması
- Addım 3: Kameranızı sınayın
- Addım 4: Üz Algılama
- Addım 5: Məlumat Toplama
- Addım 6: Təlimçi
- Addım 7: Tanıyıcı
- Addım 8: Nəticə
Video: Real vaxt üz tanıma: sona çatan bir layihə: 8 addım (şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:47
OpenCV araşdıran son dərsliyimdə, OTOMATİK VİZYON MƏSƏLƏSİNİ TAKİB etməyi öyrəndik. İndi aşağıda gördüyünüz kimi PiCam-dan istifadə edərək üzləri real vaxtda tanıyacağıq:
Bu layihə bu fantastik "Açıq Mənbə Kompüter Görmə Kitabxanası", OpenCV ilə edildi. Bu təlimatda, Raspberry Pi (OS olaraq Raspbian) və Python -a diqqət yetirəcəyik, amma kodu Mac -da da sınadım və o da yaxşı işləyir. OpenCV, hesablama səmərəliliyi üçün və real vaxt tətbiqlərinə güclü diqqət yetirmək üçün hazırlanmışdır. Beləliklə, bir kamera istifadə edərək real vaxt üz tanıma üçün idealdır.
Üz Tanıma ilə bağlı tam bir layihə yaratmaq üçün 3 fərqli mərhələdə çalışmalıyıq:
- Üz Algılama və Məlumat Toplama
- Tanıdıcı öyrədin
- Üz Tanıma
Aşağıdakı blok diaqram bu mərhələləri davam etdirir:
Addım 1: BoM - Material Bill
Əsas hissələr:
- Raspberry Pi V3 - 32.00 ABŞ dolları
- 5 Megapiksel 1080p Sensor OV5647 Mini Kamera Video Modulu - 13.00 ABŞ dolları
Addım 2: OpenCV 3 Paketinin Qurulması
Raspbian (Stretch) son versiyasına qədər yenilənmiş bir Raspberry Pi V3 istifadə edirəm, buna görə OpenCV quraşdırmağın ən yaxşı yolu Adrian Rosebrock: Raspbian Stretch: OpenCV 3 + Python'u Raspberry Pi -də quraşdırın..
Pi -də OpenCV qurmaq üçün bir neçə fərqli bələdçi sınadım. Adrianın dərsliyi ən yaxşısıdır. Onun təlimatlarını addım-addım yerinə yetirərək eyni şeyi etməyi məsləhət görürəm.
Adrianın dərsini bitirdikdən sonra Pi -də təcrübələrimizi aparmağa hazır bir OpenCV virtual mühitiniz olmalıdır.
Virtual mühitimizə gedək və OpenCV 3 -ün düzgün qurulduğunu təsdiq edək.
Adrian, sistem dəyişənlərinizin düzgün qurulduğundan əmin olmaq üçün hər dəfə yeni bir terminal açanda "mənbə" əmrini yerinə yetirməyi məsləhət görür.
mənbə ~/.profil
Sonra virtual mühitimizə daxil olaq:
iş cv
İstəkdən əvvəl mətni (cv) görürsünüzsə, o zaman cv virtual mühitindəsiniz:
(cv) pi@moruq: ~ $Adrian, cv Python virtual mühitinin tamamilə müstəqil olduğuna və Raspbian Stretch yükləməsinə daxil olan standart Python versiyasından ayrıldığına diqqət çəkir. Beləliklə, qlobal sayt paketləri kataloqundakı Python paketləri cv virtual mühitində mövcud olmayacaq. Eynilə, cv sayt paketlərində quraşdırılmış Python paketləri Python-un qlobal quraşdırılması üçün əlçatan olmayacaq.
İndi Python tərcüməçinizə daxil olun:
piton
və 3.5 (və ya daha yuxarı) versiyasını işlədiyinizi təsdiq edin
Tərcüməçinin içərisində (">>>" görünəcək) OpenCV kitabxanasını idxal edin:
idxal cv2
Heç bir səhv mesajı görünməsə, OpenCV PYTHON VIRTUAL MÜHİTİNİZƏ düzgün şəkildə quraşdırılmışdır.
Qurulmuş OpenCV versiyasını da yoxlaya bilərsiniz:
cv2._ versiyası_
3.3.0 görünməlidir (və ya gələcəkdə buraxıla biləcək üstün bir versiya). Yuxarıdakı Terminal PrintScreen əvvəlki addımları göstərir.
Addım 3: Kameranızı sınayın
RPi -də OpenCV quraşdırıldıqdan sonra kameranızın düzgün işlədiyini yoxlamaq üçün test edək.
Raspberry Pi -də artıq bir PiCam qurduğunuzu düşünürəm.
Aşağıdakı Python kodunu IDE -yə daxil edin:
np kimi numpy idxal edin
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. çevir (çərçivə, -1) # Kameranı dikey olaraq çevir boz = cv2.cvtColor (çərçivə, cv2. COLOR_BGR2GRAY) cv2.imshow ('çərçivə', çərçivə) cv2.imshow ('boz', boz) k = cv2.waitKey (30) Və 0xff əgər k == 27: # fasilədən çıxmaq üçün 'ESC' düyməsinə basın.release () cv2.destroyAllWindows ()
Yuxarıdakı kod, PiCam tərəfindən yaradılacaq və hər ikisini də BGR rəngində və Boz rejimində əks etdirən video axını çəkəcək.
Diqqət yetirin ki, kameranı yığma üsulu ilə şaquli olaraq döndərmişəm. Əgər belə deyilsə, "çevir" əmr satırını şərh edin və ya silin.
Alternativ olaraq kodu GitHub -dan yükləyə bilərsiniz: simpleCamTest.py
İcra etmək üçün əmri daxil edin:
python simpleCamTest.py
Proqramı bitirmək üçün klaviaturanızdakı [ESC] düyməsini basmalısınız.
[ESC] düyməsini basmadan əvvəl video pəncərəsində siçanınızı vurun
Yuxarıdakı şəkil nəticəni göstərir.
Bəzi istehsalçılar kameranı açmağa çalışarkən problem tapdılar ("Təsdiq alınmadı" səhv mesajları). Bu, OpenCv quraşdırılması zamanı kamera işə salınmadığı təqdirdə, kamera sürücülərinin düzgün qurulmaması halında baş verə bilər. Düzəltmək üçün əmrdən istifadə edin:
sudo modprobe bcm2835-v4l2
Sürücünün yüklənməsi üçün /etc /modules faylının son sətrinə bcm2835-v4l2 əlavə edə bilərsiniz.
OpenCV haqqında daha çox məlumat əldə etmək üçün təlimatı izləyə bilərsiniz: loading -video-python-opencv-tutorial
Addım 4: Üz Algılama
Üz Tanıma mövzusunda ən əsas vəzifə, əlbəttə ki, "Üz Algılama" dır. Hər şeydən əvvəl, gələcəkdə tutulan yeni bir üzlə (Faza 3) müqayisə edildikdə, onu tanımaq üçün "Faz 1" çəkməlisiniz.
Bir üzü (və ya hər hansı bir obyekti) aşkar etməyin ən çox yayılmış yolu "Haar Cascade təsnifatçısı" ndan istifadə etməkdir.
Haar xüsusiyyətinə əsaslanan kaskad təsnifatçılarından istifadə edərək Nesne Algılama, Paul Viola və Michael Jones tərəfindən 2001-ci ildə "Sadə Xüsusiyyətlərin Artırılmış Kaskadından istifadə edərək Sürətli Obyekt Algılama" tərəfindən təklif olunan təsirli bir obyekt aşkarlama üsuludur. kaskad funksiyası bir çox müsbət və mənfi görüntüdən hazırlanır. Daha sonra digər şəkillərdəki obyektləri aşkar etmək üçün istifadə olunur.
Burada üz tanıma ilə işləyəcəyik. Başlanğıcda, alqoritmə təsnifatçını öyrətmək üçün çoxlu müsbət şəkillər (üz şəkilləri) və mənfi şəkillər (üzsüz şəkillər) lazımdır. Sonra ondan xüsusiyyətlər çıxarmalıyıq. Yaxşı xəbər odur ki, OpenCV bir məşqçi və bir detektorla birlikdə gəlir. Avtomobil, təyyarə və s. Kimi hər hansı bir obyekt üçün öz təsnifatçınızı öyrətmək istəyirsinizsə OpenCV -dən istifadə edərək birini yarada bilərsiniz. Bütün detalları burada verilmişdir: Cascade Classifier Training.
Öz təsnifatçınızı yaratmaq istəmirsinizsə, OpenCV-də artıq üz, göz, gülüş və s. Üçün əvvəlcədən öyrədilmiş bir çox təsnifatçılar var. Bu XML faylları haarcascades kataloqundan yüklənə bilər.
Kifayət qədər nəzəriyyə, gəlin OpenCV ilə bir üz detektoru yaradaq!
GitHub -dan faceDetection.py faylını yükləyin.
np kimi numpy idxal edin
cv2 faceCascade = cv2. CascadeClassifier ('Cascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) cap.set (3, 640) # set Genişlik cap.set (4, 480) # hündürlüyü True olaraq təyin edin: ret, img = cap.read () img = cv2.flip (img, -1) boz = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) üzlər = faceCascade.detectMultiScale (boz, miqyasFactor = 1.2, minNeighbors = 5, minSize = (20, 20)) (x, y, w, h) üzlərində: cv2.dörtgen (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = boz [y: y+h, x: x+w] roi_color = img [y: y+h, x: x+w] cv2.imshow ('video', img) k = cv2.waitKey (30) & 0xff if k == 27: # break cap -dən çıxmaq üçün 'ESC' düyməsinə basın.release () cv2.destroyAllWindows ()
İnanın ya da inanmayın, Python və OpenCV istifadə edərək bir üzü aşkar etmək üçün yuxarıdakı bir neçə kod xətti kifayətdir.
Kameranı sınamaq üçün istifadə olunan son kodla müqayisə etdikdə, ona bir neçə hissənin əlavə olunduğunu anlayacaqsınız. Aşağıdakı xəttə diqqət yetirin:
faceCascade = cv2. CascadeClassifier ('Cascades/haarcascade_frontalface_default.xml')
Bu, "təsnifatçını" yükləyən xəttdir (bu, layihə kataloqunuzun altında "Cascades/" adlı bir kataloqda olmalıdır).
Sonra, kameramızı quracağıq və döngənin içərisində giriş videomuzu boz rəngli rejimdə yükləyəcəyik (əvvəllər gördüyümüz kimi).
İndi miqyas faktoru, qonşuların sayı və aşkar edilmiş üzün minimum ölçüsü kimi bir çox vacib parametrləri ötürərək təsnifat funksiyamızı çağırmalıyıq.
üzlər = faceCascade.detectMultiScale (boz, miqyaslıFaktor = 1.2, minQonşular = 5, min Ölçü = (20, 20))
Harada,
- boz, gri tonlamalı giriş şəklidir.
- scaleFactor, hər bir görüntü miqyasında görüntü ölçüsünün nə qədər kiçildiyini ifadə edən parametrdir. Ölçəkli piramida yaratmaq üçün istifadə olunur.
- minNeighbors, hər bir namizəd dikdörtgənin onu saxlamaq üçün neçə qonşuya sahib olmasını təyin edən bir parametrdir. Daha yüksək rəqəm daha aşağı yanlış pozitivlər verir.
- minSize, üz hesab ediləcək minimum düzbucaqlı ölçüdür.
Bu funksiya şəkildəki üzləri aşkar edəcək. Sonra, məsələn, mavi bir düzbucaqlı istifadə edərək, şəkildəki üzləri "qeyd etməliyik". Bu kodun bu hissəsi ilə edilir:
üzlərdə (x, y, w, h) üçün:
cv2.dörtgen (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = boz [y: y+h, x: x+w] roi_color = img [y: y+h, x: x+w]
Üzlər tapılarsa, aşkar edilmiş üzlərin mövqelərini sol yuxarı küncündə (x, y) olan və eni "w", hündürlüyü "h" olan ==> (x, y, w, h). Zəhmət olmasa yuxarıdakı şəklə baxın.
Bu yerləri əldə etdikdən sonra üz üçün "ROI" (çəkilmiş düzbucaqlı) yarada və nəticəni imshow () funksiyası ilə təqdim edə bilərik.
Rpi Terminalını istifadə edərək, yuxarıdakı python Scriptini python mühitinizdə işlədin:
python faceDetection.py
Nəticə:
"Göz algılama" və ya hətta "gülümsəmə algılama" üçün təsnifatçılar da daxil edə bilərsiniz. Bu hallarda, təsnifat funksiyasını və üz döngəsinin içərisinə düzbucaqlı çəkməyi daxil edəcəksiniz, çünki üzdən kənarda bir göz və ya gülümsəmə aşkar etməyin heç bir mənası yoxdur.
Unutmayın ki, eyni kodda bir neçə təsnifatçının olması, bu aşkarlama üsulu (HaarCascades) böyük miqdarda hesablama gücündən istifadə etdikdə emal prosesini ləngidir. Bir masaüstündə onu idarə etmək daha asandır.
GitHub -da başqa nümunələr tapa bilərsiniz:
faceEyeDetection.py
faceSmileDetection.py
faceSmileEyeDetection.py
Və yuxarıdakı şəkildə nəticəni görə bilərsiniz.
Üz Algılamasını daha yaxşı başa düşmək üçün aşağıdakı təlimatı da izləyə bilərsiniz:
Haar Cascade Object Detection Face & Eye OpenCV Python Dərsliyi
Addım 5: Məlumat Toplama
Hər şeydən əvvəl, Ramiz Racaya fotoşəkillərdəki Üz Tanıma mövzusunda böyük işinə görə təşəkkür etməliyəm:
OPENCV VƏ PYTHON İSTİFADƏ EDƏN ÜZÜN TANINMASI: BAŞLAYICININ KILAVUZU
və eyni zamanda videodan istifadə edərək çox əhatəli bir dərs hazırlayan Anirban Kar:
YÜZ TANINMA - 3 hissə
Həqiqətən hər iki dərsliyə də baxmağınızı məsləhət görürəm.
Bunu söyləyərək layihəmizin birinci mərhələsinə başlayaq. Burada edəcəyimiz şey, son addımdan başlayaraq (Üz Algılama), sadəcə hər bir şəxsiyyət üçün, üz tanıma üçün istifadə edilən hissəsi olan boz rəngli fotoşəkillər qrupunu saxlayacağımız bir verilənlər bazası yaradacağıq.
Əvvəlcə layihənizi inkişaf etdirdiyiniz bir kataloq yaradın, məsələn, FacialRecognitionProject:
mkdir FacialRecognitionProject
Bu kataloqda, layihəmiz üçün yaradacağımız 3 python skriptindən başqa, Üz Təsnifatçısını da saxlamış olmalıyıq. GitHub -dan yükləyə bilərsiniz: haarcascade_frontalface_default.xml
Sonra, üz nümunələrimizi saxlayacağımız və "verilənlər bazası" adlandıracağımız bir alt kataloq yaradın:
mkdir verilənlər bazası
Kodu GitHub -dan yükləyin: 01_face_dataset.py
idxal 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') # Hər bir şəxs üçün, bir rəqəmli üz id daxil edin face_id = giriş ('\ n istifadəçi id nömrəsini daxil edin ==>') yazdır ("\ n [BİLGİ] Üz tutma işə salınır. Kameraya baxın və gözləyin…") # Fərdi nümunə götürmə üz sayı sayını başladın = 0 isə (Doğru): ret, img = cam.read () img = cv2.flip (img, -1) # video görüntüsünü dikey olaraq çevir boz = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) üzlər = face_detector.detectMultiScale (boz, 1.3, 5) (x, y, w, h) üzlərində: cv2.dörtgen (img, (x, y), (x+w, y+h), (255, 0, 0), 2) count + = 1 # Çəkilən görüntünü cv2.imwrite ("verilənlər bazası/İstifadəçi." + str (face_id) + '.' + str (say) + ".jpg", boz [y: y + h, x: x+w]) cv2.imshow ('image', img) k = cv2.waitKey (100) & 0xff # k == 27: break elif count> = 30: videodan çıxmaq üçün 'ESC' düyməsini basın. # 30 üz nümunəsi alın və video fasiləsini dayandırın # Do ab bu təmizləmə çapı ("\ n [INFO] Proqramdan çıxmaq və təmizləmə işləri") cam.release () cv2.destroyAllWindows ()
Kod, üz tanıma üçün gördüyümüz koda çox bənzəyir. Əlavə etdiyimiz, bir istifadəçi identifikatorunu ələ keçirmək üçün "giriş əmri" idi, bu tam ədəd olmalıdır (1, 2, 3 və s.)
face_id = giriş ('\ n istifadəçi id nömrəsinə daxil olun son ==>')
Və çəkilmiş çərçivələrin hər biri üçün onu "verilənlər bazası" qovluğunda bir fayl olaraq qeyd etməliyik:
cv2.imwrite ("verilənlər bazası/İstifadəçi." + str (face_id) + '.' + str (say) + ".jpg", boz [y: y + h, x: x + w])
Qeyd edək ki, yuxarıdakı faylı saxlamaq üçün "os" kitabxanasını idxal etmisiniz. Hər bir faylın adı quruluşa uyğun olacaq:
İstifadəçi.face_id.count.jpg
Məsələn, face_id = 1 olan bir istifadəçi üçün verilənlər bazası/ qovluqdakı 4 -cü nümunə faylı belə olacaq:
İstifadəçi.1.4.jpg
Pi -dən yuxarıdakı fotoda göstərildiyi kimi. Kodumda hər iddən 30 nümunə çəkirəm. Bunu son "elif" də dəyişə bilərsiniz. Nümunələrin sayı, üz nümunələrinin tutulduğu döngəni qırmaq üçün istifadə olunur.
Python skriptini işlədin və bir neçə id çəkin. Yeni bir istifadəçini birləşdirmək istədiyiniz zaman (və ya fotoşəkilləri artıq mövcud olan birinin şəklini dəyişdirmək üçün) hər dəfə işə salmalısınız.
Addım 6: Təlimçi
Bu ikinci mərhələdə, verilənlər bazamızdakı bütün istifadəçi məlumatlarını və OpenCV Recognizer -in "təlimatçısı" nı götürməliyik. Bu birbaşa xüsusi bir OpenCV funksiyası ilə edilir. Nəticə "trainer/" qovluğunda saxlanılacaq.yml faylı olacaq.
Beləliklə, təlim keçmiş məlumatları saxlayacağımız bir alt kataloq yaratmağa başlayaq:
mkdir məşqçi
GitHub -dan ikinci python skriptini yükləyin: 02_face_training.py
idxal cv2
PIL iddən np olaraq şəkil idxal edin Image import os # Path image data database yolu = 'verilənlər bazası' tanıyıcısı = cv2.face. LBPHFaceRecognizer_create () detector = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml"); şəkilləri və etiket məlumatlarını əldə etmək üçün # funksiyası getImagesAndLabels (yol): imagePaths = [os.path.join (yol, f) in f in os.listdir (yol)] faceSamples = idP = imagePath üçün imagePath üçün: PIL_img = Image.open (imagePath).convert ('L') # boz rəngə çevirin img_numpy = np.array (PIL_img, 'uint8') id = int (os.path.split (imagePath) [-1]. split (".") [1]) üz = detector.detectMultiScale (img_numpy) (x, y, w, h) üçün: faceSamples.append (img_numpy [y: y+h, x: x+w]) ids.append (id) return faceSamples, ids print ("\ n [INFO] Təlim üzləri. Bir neçə saniyə çəkəcək. Gözləyin…") üzlər, ids = getImagesAndLabels (yol) tanıyıcı.train (üzlər, np.array (ids)) # Modeli təlimçi/təlimçi.yml tanıyıcıya yazın. yazın ('məşqçi/məşqçi.yml') # tanıyıcı.save () Mac -da çalışdı, amma Pi -də deyil ("\ n [INFO] {0} üzləri təlim keçdi. Proqramdan çıxılır". format (len (np.unique (ids)))))
Rpi -də PIL kitabxanasının quraşdırıldığını təsdiq edin. Əks təqdirdə, Terminalda aşağıdakı əmri işlədin:
yastığı quraşdırın
OpenCV paketinə daxil olan LBPH (LOCAL BINARY PATTERNS HISTOGRAMS) Face Recognizer kimi tanınan kimi istifadə edəcəyik. Bunu aşağıdakı sətirdə edirik:
tanıyıcı = cv2.face. LBPHFaceRecognizer_create ()
"GetImagesAndLabels (yol)" funksiyası, kataloqdakı bütün şəkilləri çəkəcək: "verilənlər bazası/", 2 sıra qaytaran: "İdlər" və "üzlər". Bu serialları giriş olaraq "tanıyıcımızı hazırlayacağıq":
tanıyıcı.train (üzlər, idlər)
Nəticədə, "trainer.yml" adlı bir fayl əvvəllər bizim tərəfimizdən yaradılmış təlimçi qovluğunda saxlanılacaq.
Bu belədir! Təsdiq üçün göstərdiyim son çap bəyanatını, öyrətdiyimiz İstifadəçinin üzlərinin sayını daxil etdim.
Mərhələ 1 -i hər dəfə yerinə yetirdiyiniz zaman 2 -ci mərhələ də işə salınmalıdır
Addım 7: Tanıyıcı
İndi layihəmizin son mərhələsinə çatdıq. Burada kameramızda təzə bir üz tutacağıq və əgər bu şəxsin üzü əvvəllər çəkilərək öyrədilmiş olsaydı, tanıyıcımız identifikatorunu və indeksini qaytaran bir "proqnoz" verəcək, tanıyıcının bu matça nə qədər əmin olduğunu göstərir.
GitHub -dan 3 -cü faza python skriptini yükləyək: 03_face_recognition.py.
idxal cv2
np kimi id nömrəsi id id = cv2.face. LBPHFaceRecognizer_create () tanıyıcı.read ('trainer/trainer.yml') cascadePath = "haarcascade_frontalface_default.xml" faceCascade = cv2. CascadeClassifier (cascadePath); font = cv2. FONT_HERSHEY_SIMPLEX # id sayar id = 0 # id ilə əlaqəli adlar: məsələn ==> Marcelo: id = 1 və s adlar = ['Heç biri', 'Marcelo', 'Paula', 'Ilza', 'Z ',' W '] # Real vaxtda video çəkilişini başladın və başladın cam = cv2. VideoCapture (0) cam.set (3, 640) # set video widht cam.set (4, 480) # set video height # Min pəncərə ölçüsünü təyin edin bir üz olaraq tanınmaq üçün minW = 0.1*cam.get (3) minH = 0.1*cam.get (4) isə True: ret, img = cam.read () img = cv2.flip (img, -1) # (X, y), w, h) üzlərində: cv2.dörtbucaq (img, (x, y), (x+w, y+h), (0, 255, 0), 2) id, güvən = tanıyıcı.predikt (boz [y: y+h, x: x+w]) # Güvənin onlardan az olub olmadığını yoxlayın 100 ==> "0" mükəmməl uyğunluq olarsa (güvənlik <100): id = adlar [id] güvən = "{0}% ".format (dəyirmi (100 - güvən)) başqa: id =" naməlum "güvən =" {0}%". format (dəyirmi (100 - konf idence)) cv2.putText (img, str (id), (x+5, y-5), font, 1, (255, 255, 255), 2) cv2.putText (img, str (güvən), (x+5, y+h-5), font, 1, (255, 255, 0), 1) cv2.imshow ('kamera', img) k = cv2.waitKey (10) & 0xff # 'ESC' düyməsini basın k == 27 olduqda videodan çıxmaq üçün: break # Bir az təmizləmə çapı ("\ n [INFO] Proqramdan çıxmaq və təmizləmə işləri") cam.release () cv2.destroyAllWindows ()
Buraya yeni bir sıra daxil edirik, buna görə nömrələnmiş idlər yerinə "adlar" göstərəcəyik:
adlar = ['Heç biri', 'Marcelo', 'Paula', 'İlza', 'Z', 'W']
Beləliklə, məsələn: Marcelo id = 1 ilə istifadəçi olacaq; Paula: id = 2 və s.
Bundan sonra, haasCascade təsnifatçısı ilə əvvəllər etdiyimiz kimi bir üz aşkar edəcəyik. Aşkar edilmiş bir üzə sahib olaraq yuxarıdakı koddakı ən vacib funksiyanı çağıra bilərik:
id, güvən = tanıyıcı.predikt (üzün boz hissəsi)
Tanıdıcı.predict (), analiz ediləcək üzün tutulan bir hissəsini parametr olaraq alacaq və identifikatorunu və tanıyanın bu matçla bağlı nə qədər güvəndiyini göstərən ehtimal sahibini qaytaracaq.
Diqqət yetirin ki, inam indeksi "sıfıra" qayıdacaq, əgər mükəmməl bir uyğunluq olarsa
Və nəhayət, tanınan şəxs bir üzü proqnozlaşdıra bilsəydi, ehtimal olunan id ilə şəklin üstünə bir mətn qoyuruq və "ehtimal" ın nə qədər olduğunu ("ehtimal" = 100 - güvən indeksi). Əks təqdirdə, üzünə "bilinməyən" bir etiket qoyulur.
Nəticədə bir-g.webp
Yuxarıdakı şəkildə, bu layihə ilə edilən bəzi testləri göstərirəm, burada da tanıyıcının işlədiyini yoxlamaq üçün fotoşəkillərdən istifadə etmişəm.
Addım 8: Nəticə
Həmişə olduğu kimi, ümid edirəm ki, bu layihə başqalarına maraqlı elektronika dünyasına yol tapmağa kömək edə bilər!
Detallar və son kod üçün GitHub depozitimi ziyarət edin: OpenCV-Face-Recognition
Daha çox layihə üçün blogumu ziyarət edin: MJRoBot.org
Aşağıda "avtomatik üz izi və üz tanıma üçün digər üsulları" araşdıracağımız gələcək bir dərslikdən bir az aşağıda:
Dünyanın cənubundan salamlar!
Növbəti təlimatımda görüşənədək!
Çox sağ ol, Marcelo
Tövsiyə:
MicroPython Proqramı: Koronavirus xəstəliyi (COVID-19) məlumatlarını real vaxt rejimində yeniləyin: 10 addım (şəkillərlə)
MicroPython Proqramı: Koronavirus xəstəliyi (COVID-19) məlumatlarını real vaxt rejimində yeniləyin: Son bir neçə həftə ərzində dünyada təsdiqlənmiş koronavirus xəstəliyi (COVID 19) hallarının sayı 100,000-i keçdi və Dünya Səhiyyə Təşkilatı (ÜST) yeni koronavirus sətəlcəm epidemiyası qlobal bir pandemiya olacaq. Çox idim
Opencv Üz Tanıma, Təlim və Tanıma: 3 addım
Opencv Üz Tanıma, Təlim və Tanıma: OpenCV, bulanıqlaşdırma, şəkil qarışdırma, görüntünün yaxşılaşdırılması, video keyfiyyətinin artırılması, eşikləmə və s. sübut edir
Üz Tanıma və Tanıma - OpenCV Python və Arduino istifadə edərək Arduino Face ID: 6 Addım
Üz Tanıma və Tanıma | OpenCV Python və Arduino istifadə edərək Arduino Face ID: Üz tanıma AKA üz ID indiki zamanda cib telefonlarında ən əhəmiyyətli xüsusiyyətlərdən biridir. Beləliklə, bir sualım var idi: "Arduino layihəm üçün üz idim ola bilərmi?" və cavab bəli … Səyahətim belə başladı: Addım 1: Bizə giriş
Üz Tanıma+Tanıma: 8 Addım (Şəkillərlə birlikdə)
Üz Algılama+tanıma: Bu, bir kameradan OpenCV ilə üz tanıma və tanıma işlərinin sadə bir nümunəsidir. DİQQƏT: BU PROJƏNİ SENSOR MÜSABİQƏSİ ÜÇÜN YAPDIM VƏ YÜZLƏRİ İZLƏMƏK VƏ TANIŞI YÜZÜNÜN KAMERASINDAN İSTİFADƏ ETDİM
USB ilə işləyən brülör! Bu Layihə Plastik / Ağac / Kağızdan Yanar (Əyləncəli Layihə Çox İncə Taxta Olmalıdır): 3 Addım
USB ilə işləyən brülör! Bu Layihə Plastik / Ağac / Kağızdan Yandırıla bilər (əyləncəli Layihə Çox İncə Taxta Olmalıdır): BU USB İSTİFADƏ ETMƏYİN !!!! Bütün şərhlərdən kompüterinizə zərər verə biləcəyini öyrəndim. mənim kompüterim yaxşıdır 600ma 5v telefon şarj cihazı istifadə edin. Bunu istifadə etdim və yaxşı işləyir və elektrik enerjisini dayandırmaq üçün təhlükəsizlik fişindən istifadə etsəniz heç bir şey zədələnə bilməz