Isi kandungan:

Pengecaman Muka Masa Nyata: Projek Akhir ke Akhir: 8 Langkah (dengan Gambar)
Pengecaman Muka Masa Nyata: Projek Akhir ke Akhir: 8 Langkah (dengan Gambar)

Video: Pengecaman Muka Masa Nyata: Projek Akhir ke Akhir: 8 Langkah (dengan Gambar)

Video: Pengecaman Muka Masa Nyata: Projek Akhir ke Akhir: 8 Langkah (dengan Gambar)
Video: 【Multi Sub】《炼体十万层:都市篇》EP1~EP119合集 | 炼体期最强修士,从远古时期修炼到现代,就连养的狗都是战力天花板级别!#热血 #都市 #修仙 #爽文 #重生 #逆袭 2024, Julai
Anonim
Pengecaman Muka Masa Nyata: Projek Akhir ke Akhir
Pengecaman Muka Masa Nyata: Projek Akhir ke Akhir

Pada tutorial terakhir saya yang menjelajah OpenCV, kami mempelajari TRACKING OBJEK VISI AUTOMATIK. Sekarang kami akan menggunakan PiCam kami untuk mengenali wajah dalam masa nyata, seperti yang anda lihat di bawah:

Imej
Imej

Projek ini dilakukan dengan "Open Source Computer Vision Library" yang hebat, OpenCV. Pada tutorial ini, kita akan memfokuskan pada Raspberry Pi (jadi, Raspbian sebagai OS) dan Python, tetapi saya juga menguji kod di Mac saya dan ia juga berfungsi dengan baik. OpenCV dirancang untuk kecekapan komputasi dan dengan fokus yang kuat pada aplikasi masa nyata. Jadi, sangat sesuai untuk pengecaman wajah masa nyata menggunakan kamera.

Untuk membuat projek lengkap mengenai Pengecaman Wajah, kita mesti mengusahakan 3 fasa yang sangat berbeza:

  1. Pengesanan Muka dan Pengumpulan Data
  2. Latih Pengecam
  3. Pengecaman Muka

Gambarajah blok di bawah menyambung semula fasa-fasa tersebut:

Imej
Imej

Langkah 1: BoM - Bil Bahan

Bahagian utama:

  1. Raspberry Pi V3 - US $ 32.00
  2. Modul Video Kamera Mini Sensor OV5647 5 Megapiksel 1080p - US $ 13.00

Langkah 2: Memasang Pakej OpenCV 3

Memasang Pakej OpenCV 3
Memasang Pakej OpenCV 3

Saya menggunakan Raspberry Pi V3 yang dikemas kini ke versi terakhir Raspbian (Stretch), jadi cara terbaik untuk memasang OpenCV, adalah mengikuti tutorial yang sangat baik yang dikembangkan oleh Adrian Rosebrock: Raspbian Stretch: Pasang OpenCV 3 + Python pada Raspberry Pi anda.

Saya mencuba beberapa panduan berbeza untuk memasang OpenCV pada Pi saya. Tutorial Adrian adalah yang terbaik. Saya menasihati anda untuk melakukan perkara yang sama, mengikuti panduannya selangkah demi selangkah.

Setelah anda menyelesaikan tutorial Adrian, anda seharusnya mempunyai persekitaran maya OpenCV yang siap untuk menjalankan eksperimen kami pada Pi anda.

Mari pergi ke persekitaran maya kami dan sahkan bahawa OpenCV 3 dipasang dengan betul.

Adrian mengesyorkan menjalankan perintah "sumber" setiap kali anda membuka terminal baru untuk memastikan pemboleh ubah sistem anda telah disiapkan dengan betul.

sumber ~ /.profil

Seterusnya, mari masuk ke persekitaran maya kami:

workon cv

Sekiranya anda melihat teks (cv) sebelum arahan anda, maka anda berada di persekitaran maya cv:

(cv) pi @ raspberry: ~ $Adrian menarik perhatian bahawa persekitaran maya cv Python sepenuhnya bebas dan diasingkan dari versi Python lalai yang termasuk dalam muat turun Raspbian Stretch. Jadi, sebarang pakej Python di direktori pakej laman web global tidak akan tersedia untuk persekitaran maya cv. Begitu juga, sebarang pakej Python yang dipasang di pakej laman cv tidak akan tersedia untuk pemasangan global Python

Sekarang, masukkan jurubahasa Python anda:

ular sawa

dan sahkan bahawa anda menjalankan versi 3.5 (atau lebih tinggi)

Di dalam jurubahasa (">>>" akan muncul), import pustaka OpenCV:

import cv2

Sekiranya tidak ada mesej ralat yang muncul, OpenCV dipasang dengan betul DI ALAM SEKITAR PYTHON VIRTUAL ANDA.

Anda juga boleh memeriksa versi OpenCV yang dipasang:

cv2._ versi_

3.3.0 akan muncul (atau versi unggul yang dapat dilepaskan di masa depan). Skrin Cetak Terminal di atas menunjukkan langkah-langkah sebelumnya.

Langkah 3: Menguji Kamera Anda

Menguji Kamera Anda
Menguji Kamera Anda

Setelah OpenCV dipasang di RPi anda, mari kita menguji untuk memastikan kamera anda berfungsi dengan baik.

Saya menganggap bahawa anda telah memasang PiCam pada Raspberry Pi anda.

Masukkan kod Python di bawah di IDE anda:

import numpy sebagai np

import 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) # Balikkan kamera dengan warna kelabu secara menegak = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) cv2.imshow ('frame', frame) cv2.imshow ('grey', grey) k = cv2.waitKey (30) & 0xff jika k == 27: # tekan 'ESC' untuk berhenti tutup cap. Lepaskan () cv2.destroyAllWindows ()

Kod di atas akan menangkap aliran video yang akan dihasilkan oleh PiCam anda, memaparkan keduanya, dalam mod warna BGR dan Kelabu.

Perhatikan bahawa saya memutar kamera saya secara menegak kerana cara pemasangannya. Sekiranya tidak, komen atau hapuskan baris arahan "flip".

Anda boleh memuat turun kod dari GitHub saya: simpleCamTest.py

Untuk melaksanakan, masukkan arahan:

python simpleCamTest.py

Untuk menyelesaikan program, anda mesti menekan kekunci [ESC] pada papan kekunci anda.

Klik tetikus anda pada tetingkap video, sebelum menekan [ESC]

Gambar di atas menunjukkan hasilnya.

Beberapa pembuat menemui masalah ketika cuba membuka kamera (Mesej ralat "Tegasan gagal"). Itu boleh berlaku sekiranya kamera tidak diaktifkan semasa pemasangan OpenCv dan pemacu kamera tidak dipasang dengan betul. Untuk membetulkan, gunakan arahan:

sudo modprobe bcm2835-v4l2

Anda juga boleh menambahkan bcm2835-v4l2 ke baris terakhir fail / etc / modules sehingga pemacu dimuat semasa boot.

Untuk mengetahui lebih lanjut mengenai OpenCV, anda boleh mengikuti tutorial: memuat -video-python-opencv-tutorial

Langkah 4: Pengesanan Muka

Pengesanan Muka
Pengesanan Muka
Pengesanan Muka
Pengesanan Muka

Tugas paling asas mengenai Pengecaman Wajah tentu saja, "Mengesan Wajah". Sebelum apa-apa, anda mesti "menangkap" wajah (Fasa 1) untuk mengenalinya, jika dibandingkan dengan wajah baru yang ditangkap di masa depan (Fasa 3).

Cara yang paling biasa untuk mengesan wajah (atau objek apa pun), adalah dengan menggunakan "Haar Cascade classifier"

Pengesanan Objek menggunakan pengklasifikasi kaskade berasaskan ciri Haar adalah kaedah pengesanan objek yang berkesan yang dicadangkan oleh Paul Viola dan Michael Jones dalam makalah mereka, "Pengesanan Objek Cepat menggunakan Cascade Boosted of Simple Features" pada tahun 2001. Ini adalah pendekatan berasaskan pembelajaran mesin di mana fungsi lata dilatih dari banyak gambar positif dan negatif. Ia kemudian digunakan untuk mengesan objek dalam gambar lain.

Di sini kita akan bekerjasama dengan pengesanan wajah. Pada mulanya, algoritma memerlukan banyak gambar positif (gambar wajah) dan gambar negatif (gambar tanpa wajah) untuk melatih pengkelasan. Maka kita perlu mengekstrak ciri daripadanya. Berita baiknya ialah OpenCV dilengkapi dengan pelatih dan juga pengesan. Sekiranya anda ingin melatih pengkelasan anda sendiri untuk objek seperti kereta, pesawat dll, anda boleh menggunakan OpenCV untuk membuatnya. Maklumat lengkapnya diberikan di sini: Latihan Pengelas Cascade.

Sekiranya anda tidak mahu membuat pengkelasan anda sendiri, OpenCV sudah mengandungi banyak pengklasifikasi yang sudah dilatih untuk wajah, mata, senyuman, dll. Fail XML tersebut boleh dimuat turun dari direktori haarcascades.

Cukup teori, mari buat alat pengesan wajah dengan OpenCV!

Muat turun fail: faceDetection.py dari GitHub saya.

import numpy sebagai np

import cv2 faceCascade = cv2. CascadeClassifier ('Cascades / haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) cap.set (3, 640) # set Width cap.set (4, 480) # set Ketinggian sementara Benar: ret, img = cap.read () img = cv2.flip (img, -1) grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) face = faceCascade.detectMultiScale (grey, scaleFactor = 1.2, minNighbourways = 5, minSize = ({ 20, 20)) untuk (x, y, w, h) di muka: cv2. segi empat tepat (img, (x, y), (x + w, y + h), (255, 0, 0), 2) roi_gray = kelabu [y: y + h, x: x + w] roi_color = img [y: y + h, x: x + w] cv2.imshow ('video', img) k = cv2.waitKey (30) & 0xff jika k == 27: # tekan 'ESC' untuk berhenti tutup cap. Lepaskan () cv2.destroyAllWindows ()

Percaya atau tidak, beberapa baris kod di atas adalah semua yang anda perlukan untuk mengesan wajah, menggunakan Python dan OpenCV.

Apabila anda membandingkan dengan kod terakhir yang digunakan untuk menguji kamera, anda akan menyedari bahawa beberapa bahagian ditambahkan padanya. Perhatikan garis di bawah:

faceCascade = cv2. CascadeClassifier ('Cascades / haarcascade_frontalface_default.xml')

Ini adalah garis yang memuat "classifier" (yang mesti ada di direktori bernama "Cascades /", di bawah direktori projek anda).

Kemudian, kami akan menetapkan kamera dan di dalam gelung, memuatkan video input kami dalam mod skala kelabu (sama seperti yang kami lihat sebelumnya).

Sekarang kita mesti memanggil fungsi pengklasifikasi kita, menyampaikannya beberapa parameter yang sangat penting, sebagai faktor skala, bilangan tetangga dan ukuran minimum wajah yang dikesan.

wajah = faceCascade.detectMultiScale (kelabu, skalaFactor = 1.2, minNeighbour = 5, minSize = (20, 20))

Di mana,

  • kelabu adalah gambar skala kelabu input.
  • scaleFactor adalah parameter yang menentukan berapa ukuran gambar dikurangkan pada setiap skala gambar. Ia digunakan untuk membuat piramid skala.
  • minNeighbours adalah parameter yang menentukan berapa banyak tetangga yang harus dimiliki oleh setiap calon segi empat tepat, untuk mengekalkannya. Nombor yang lebih tinggi memberikan positif palsu yang lebih rendah.
  • minSize adalah ukuran segiempat minimum untuk dianggap wajah.

Fungsi akan mengesan wajah pada gambar. Seterusnya, kita mesti "menandakan" wajah dalam gambar, menggunakan, misalnya, segi empat biru. Ini dilakukan dengan bahagian kod ini:

untuk (x, y, w, h) di muka:

cv2.rectangle (img, (x, y), (x + w, y + h), (255, 0, 0), 2) roi_gray = kelabu [y: y + h, x: x + w] roi_color = img [y: y + h, x: x + w]

Sekiranya wajah dijumpai, ia mengembalikan kedudukan wajah yang dikesan sebagai segi empat tepat dengan sudut kiri atas (x, y) dan mempunyai "w" sebagai Lebarnya dan "h" sebagai Tinggi ==> (x, y, w, h). Sila lihat gambar di atas.

Sebaik sahaja kita mendapat lokasi ini, kita dapat membuat "ROI" (segi empat tepat) untuk wajah dan memaparkan hasilnya dengan fungsi imshow ().

Jalankan Skrip python di atas di persekitaran python anda, menggunakan Terminal Rpi:

python faceDetection.py

Keputusan:

Imej
Imej

Anda juga boleh memasukkan pengkelasan untuk "pengesanan mata" atau bahkan "pengesanan senyuman". Dalam kes tersebut, anda akan memasukkan fungsi pengklasifikasi dan lukisan segi empat tepat di dalam gelung muka, kerana tidak masuk akal untuk mengesan mata atau senyuman di luar wajah.

Perhatikan bahawa pada Pi, mempunyai beberapa pengklasifikasi pada kod yang sama akan memperlahankan pemprosesan, setelah kaedah pengesanan ini (HaarCascades) menggunakan sejumlah besar daya pengiraan. Di desktop, lebih mudah untuk menjalankannya.

Di GitHub saya, anda akan menemui contoh lain:

faceEyeDetection.py

faceSmileDetection.py

faceSmileEyeDetection.py

Dan dalam gambar di atas, anda dapat melihat hasilnya.

Anda juga boleh mengikuti tutorial di bawah ini untuk lebih memahami Pengesanan Muka:

Tutorial Pengesanan Objek Haar Cascade Wajah & Mata OpenCV Python

Langkah 5: Pengumpulan Data

Pengumpulan Data
Pengumpulan Data
Pengumpulan Data
Pengumpulan Data

Pertama sekali, saya mesti mengucapkan terima kasih kepada Ramiz Raja untuk karya hebatnya pada Face Recognition pada foto:

PENGAKUAN WAJAH MENGGUNAKAN OPENCV DAN PYTHON: PANDUAN PEMULA

dan juga Anirban Kar, yang mengembangkan tutorial yang sangat komprehensif menggunakan video:

PENGIKTIRAFAN WAJAH - 3 bahagian

Saya sangat mengesyorkan agar anda melihat kedua-dua tutorial tersebut.

Oleh itu, mari kita mulakan fasa pertama projek kita. Apa yang akan kita lakukan di sini, adalah bermula dari langkah terakhir (Face Detecting), kita hanya akan membuat set data, di mana kita akan menyimpan untuk setiap id, sekumpulan foto berwarna kelabu dengan bahagian yang digunakan untuk mengesan wajah.

Pertama, buat direktori di mana anda mengembangkan projek anda, sebagai contoh, FacialRecognitionProject:

mkdir FacialRecognitionProject

Dalam direktori ini, selain 3 skrip python yang akan kita buat untuk projek kita, kita mesti menyimpannya di atasnya Facial Classifier. Anda boleh memuat turunnya dari GitHub saya: haarcascade_frontalface_default.xml

Seterusnya, buat subdirektori di mana kami akan menyimpan sampel wajah kami dan beri nama "dataset":

set data mkdir

Dan muat turun kod dari GitHub saya: 01_face_dataset.py

import cv2

import os cam = cv2. VideoCapture (0) cam.set (3, 640) # set cam.set lebar video (4, 480) # tetapkan ketinggian video face_detector = cv2. CascadeClassifier ('haarcascade_frontalface_default.xml') # Untuk setiap orang, masukkan satu nombor muka numerik face_id = input ('\ n masukkan id pengguna akhir tekan ==>') cetak ("\ n [INFO] Memulakan tangkapan wajah. Lihat kamera dan tunggu …") # Memulakan kiraan bilangan muka persampelan individu = 0 while (True): ret, img = cam.read () img = cv2.flip (img, -1) # flip gambar video kelabu menegak = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) wajah = face_detector.detectMultiScale (kelabu, 1.3, 5) untuk (x, y, w, h) di muka: cv2. segi empat tepat (img, (x, y), (x + w, y + h), (255, 0, 0), 2) hitung + = 1 # Simpan gambar yang ditangkap ke dalam folder set data cv2.imwrite ("dataset / User." + str (face_id) + '.' + str (count) + ".jpg", kelabu [y: y + h, x: x + w]) cv2.imshow ('image', img) k = cv2.waitKey (100) & 0xff # Tekan 'ESC' untuk keluar video jika k == 27: pecahkan bilangan elif> = 30: # Ambil 30 sampel wajah dan hentikan rehat video # Do ab itu dari cetakan pembersihan ("\ n [INFO] Keluar Program dan barang pembersihan") cam.release () cv2.destroyAllWindows ()

Kodnya sangat mirip dengan kod yang kita lihat untuk pengesanan wajah. Apa yang kami tambahkan, adalah "perintah input" untuk menangkap id pengguna, yang harus berupa bilangan bulat (1, 2, 3, dll)

face_id = input ('\ n masukkan id pengguna akhir tekan ==>')

Dan untuk setiap bingkai yang ditangkap, kita harus menyimpannya sebagai fail pada direktori "dataset":

cv2.imwrite ("dataset / User." + str (face_id) + '.' + str (count) + ".jpg", kelabu [y: y + h, x: x + w])

Perhatikan bahawa untuk menyimpan fail di atas, anda mesti mengimport perpustakaan "os". Setiap nama fail akan mengikuti struktur:

Pengguna.face_id.count.jpg

Sebagai contoh, bagi pengguna dengan face_id = 1, contoh fail ke-4 pada set data / direktori akan menjadi seperti:

Pengguna.1.4.jpg

seperti yang ditunjukkan dalam gambar di atas dari Pi saya. Pada kod saya, saya menangkap 30 sampel dari setiap id. Anda boleh menukarnya pada "elif" terakhir. Jumlah sampel digunakan untuk memecahkan gelung di mana sampel wajah ditangkap.

Jalankan skrip Python dan tangkap beberapa Id. Anda mesti menjalankan skrip setiap kali anda mahu mengumpulkan pengguna baru (atau untuk menukar foto untuk yang sudah ada).

Langkah 6: Jurulatih

Pelatih
Pelatih

Pada fasa kedua ini, kita mesti mengambil semua data pengguna dari kumpulan data kita dan "melatih" OpenCV Recognizer. Ini dilakukan secara langsung oleh fungsi OpenCV tertentu. Hasilnya akan menjadi fail.yml yang akan disimpan di direktori "trainer /".

Oleh itu, mari mulakan membuat subdirektori di mana kami akan menyimpan data terlatih:

pelatih mkdir

Muat turun dari GitHub saya skrip python kedua: 02_face_training.py

import cv2

import numpy as np dari PIL import Image import os # Path untuk pangkalan data imej wajah path = 'dataset' recognition = cv2.face. LBPHFaceRecognizer_create () detector = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml"); # fungsi untuk mendapatkan gambar dan label data def getImagesAndLabels (path): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] faceSamples = ids = untuk imagePath di imagePaths: PIL_img = Image.open (imagePath).convert ('L') # ubah menjadi skala kelabu img_numpy = np.array (PIL_img, 'uint8') id = int (os.path.split (imagePath) [- 1]. split (".") [1]) face = detector.detectMultiScale (img_numpy) untuk (x, y, w, h) di wajah: faceSamples.append (img_numpy [y: y + h, x: x + w]) ids.append (id) face returnSampel, ids print ("\ n [INFO] Training face. Ia akan mengambil masa beberapa saat. Tunggu…") face, ids = getImagesAndLabels (path) recognition.train (wajah, np.array (ids)) # Simpan model ke dalam trainer / trainer.yml recognitionizer.write ('trainer / trainer.yml') # recognitionizer.save () bekerja pada Mac, tetapi tidak pada Pi # Cetak bilangan wajah yang dilatih dan cetakan program akhir ("\ n [INFO] {0} wajah terlatih. Keluar dari Program".format (len (np.unique (ids))))

Sahkan jika anda mempunyai perpustakaan PIL yang terpasang pada Rpi anda. Sekiranya tidak, jalankan arahan di bawah di Terminal:

pip memasang bantal

Kami akan menggunakan sebagai pengecam, LBPH (LISTAL BINARY PATTERNS HISTOGRAMS) Face Recognizer, termasuk dalam pakej OpenCV. Kami melakukan ini dalam baris berikut:

mengenali = cv2.face. LBPHFaceRecognizer_create ()

Fungsi "getImagesAndLabels (path)", akan mengambil semua foto di direktori: "dataset /", mengembalikan 2 tatasusunan: "Id" dan "wajah". Dengan susunan tersebut sebagai input, kami akan "melatih pengecam kami":

mengenali.train (wajah, id)

Akibatnya, fail bernama "trainer.yml" akan disimpan dalam direktori pelatih yang sebelumnya dibuat oleh kami.

Itu sahaja! Saya menyertakan pernyataan cetak terakhir di mana saya memaparkan untuk pengesahan, jumlah wajah Pengguna yang telah kami latih.

Setiap kali anda melakukan Fasa 1, Fasa 2 juga mesti dijalankan

Langkah 7: Pengecam

Pengecam
Pengecam
Pengecam
Pengecam

Sekarang, kita mencapai fasa terakhir projek kita. Di sini, kita akan menangkap wajah segar di kamera kita dan jika orang ini menangkap dan melatih wajahnya sebelumnya, pengecam kita akan membuat "ramalan" mengembalikan id dan indeksnya, yang menunjukkan betapa yakinnya pengecam dengan pertandingan ini.

Mari muat turun skrip python fasa ke-3 dari GitHub saya: 03_face_recognition.py.

import cv2

import numpy sebagai np import os mengenali = cv2.face. LBPHFaceRecognizer_create () recognitionizer.read ('trainer / trainer.yml') cascadePath = "haarcascade_frontalface_default.xml" faceCascade = cv2. CascadeClassifier (cascadePath); font = cv2. FONT_HERSHEY_SIMPLEX #iniciate id counter id = 0 # nama yang berkaitan dengan id: contoh ==> Marcelo: id = 1, etc names = ['None', 'Marcelo', 'Paula', 'Ilza', 'Z ',' W '] # Memulakan dan memulakan rakaman video masa nyata cam = cv2. VideoCapture (0) cam.set (3, 640) # set cam.set lebar video (4, 480) # tetapkan tinggi video # Tentukan ukuran tetingkap min untuk dikenali sebagai wajah minW = 0.1 * cam.get (3) minH = 0.1 * cam.get (4) sementara True: ret, img = cam.read () img = cv2.flip (img, -1) # Balikkan kelabu secara menegak = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) face = faceCascade.detectMultiScale (grey, scaleFactor = 1.2, minNeighbour = 5, minSize = (int (minW), int (minH)),) untuk (x, y, w, h) di wajah: cv2.rectangle (img, (x, y), (x + w, y + h), (0, 255, 0), 2) id, keyakinan = mengenali.predict (kelabu [y: y + h, x: x + w]) # Periksa sama ada keyakinan lebih rendah 100 ==> "0" sangat sesuai jika (keyakinan <100): id = names [id] keyakinan = "{0}% ".format (bulat (100 - keyakinan)) yang lain: id =" tidak diketahui "keyakinan =" {0}% ". format (bulat (100 - conf id)) cv2.putText (img, str (id), (x + 5, y-5), fon, 1, (255, 255, 255), 2) cv2.putText (img, str (keyakinan), (x + 5, y + h-5), fon, 1, (255, 255, 0), 1) cv2.imshow ('camera', img) k = cv2.waitKey (10) & 0xff # Tekan 'ESC' untuk keluar dari video jika k == 27: rehat # Lakukan sedikit cetakan pembersihan ("\ n [INFO] Keluar Program dan pembersihan barang") cam.release () cv2.destroyAllWindows ()

Kami menyertakan array baru di sini, jadi kami akan memaparkan "nama", bukannya id bernombor:

nama = ['Tiada', 'Marcelo', 'Paula', 'Ilza', 'Z', 'W']

Jadi, sebagai contoh: Marcelo akan pengguna dengan id = 1; Paula: id = 2, dll.

Seterusnya, kita akan mengesan wajah, seperti yang kita lakukan sebelumnya dengan pengkelasan haasCascade. Dengan wajah yang dapat dikesan, kita boleh memanggil fungsi yang paling penting dalam kod di atas:

id, keyakinan = pengecam.prediksi (bahagian kelabu wajah)

Pengenal.prediksi (), akan mengambil sebagai parameter bahagian wajah yang ditangkap untuk dianalisis dan akan mengembalikan kemungkinan pemiliknya, menunjukkan idnya dan sejauh mana keyakinan pengecam berkaitan dengan perlawanan ini.

Perhatikan bahawa indeks keyakinan akan kembali "sifar" jika akan dianggap sesuai

Dan akhirnya, jika pengecam dapat meramalkan wajah, kami meletakkan teks di atas gambar dengan id kemungkinan dan berapa "kebarangkalian" dalam% bahawa kecocokan itu betul ("kebarangkalian" = 100 - indeks keyakinan). Sekiranya tidak, label "tidak diketahui" diletakkan di wajah.

Di bawah-g.webp

Imej
Imej

Pada gambar di atas, saya menunjukkan beberapa ujian yang dilakukan dengan projek ini, di mana saya juga telah menggunakan foto untuk mengesahkan apakah alat pengecam berfungsi.

Langkah 8: Kesimpulannya

Kesimpulannya
Kesimpulannya

Seperti biasa, saya harap projek ini dapat membantu orang lain memasuki dunia elektronik yang menarik!

Untuk maklumat terperinci dan kod terakhir, sila kunjungi simpanan GitHub saya: OpenCV-Face-Recognition

Untuk lebih banyak projek, sila lawati blog saya: MJRoBot.org

Di bawah sekilas tutorial masa depan, di mana kita akan meneroka "trek muka automatik dan kaedah lain untuk pengesanan wajah":

Imej
Imej

Saludos dari selatan dunia!

Jumpa anda dalam arahan saya seterusnya!

Terima kasih, Marcelo

Disyorkan: