Isi kandungan:
- Langkah 1: Pasang Anaconda
- Langkah 2: Muat turun Pakej CV Terbuka
- Langkah 3: Tetapkan Pemboleh ubah Persekitaran
- Langkah 4: Uji untuk mengesahkan
- Langkah 5: Buat Kod untuk Pengesanan Muka
- Langkah 6: Buat Kod untuk Membuat Set Data
- Langkah 7: Buat Kod untuk Melatih Pengecam
- Langkah 8: Buat Kod untuk Mengenali Muka & Hasilnya
Video: Pengesanan Muka + pengecaman: 8 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:12
Ini adalah contoh mudah menjalankan pengesanan dan pengecaman wajah dengan OpenCV dari kamera. CATATAN: SAYA MEMBUAT PROJEK INI UNTUK KONTES SENSOR DAN SAYA MENGGUNAKAN KAMERA SEBAGAI SENSOR UNTUK MEMATUHI DAN MENGIKTIRAF FAKTA. Oleh itu, Matlamat KamiDalam sesi ini, 1. Pasang Anaconda 2. Muat turun Pakej CV Terbuka 3. Tetapkan Pemboleh ubah Alam Sekitar 4. Uji untuk mengesahkan 5 Membuat kod untuk pengesanan wajah 6. Membuat kod untuk membuat set data 7. Membuat kod untuk melatih pengecam 8. Membuat kod untuk mengenali wajah & Hasil.
Langkah 1: Pasang Anaconda
Anaconda pada dasarnya adalah Python IDE yang dibungkus dengan baik yang dihantar dengan banyak pakej berguna, seperti NumPy, Pandas, IPython Notebook, dan lain-lain. Nampaknya ia disyorkan di mana-mana sahaja dalam komuniti saintifik. Lihat Anaconda untuk memasangnya.
Langkah 2: Muat turun Pakej CV Terbuka
Pertama, pergi ke laman web OpenCV rasmi untuk memuat turun pakej OpenCV yang lengkap. Pilih versi yang anda suka (2.x atau 3.x). Saya menggunakan Python 2.x dan OpenCV 2.x - terutamanya kerana inilah cara Tutorial OpenCV-Python disiapkan / berdasarkan.
Dalam kes saya, saya telah mengekstrak bungkusan (pada dasarnya folder) terus ke pemacu F saya. (F: / opencv).
Langkah 3: Tetapkan Pemboleh ubah Persekitaran
Salin dan Tampal fail cv2.pyd
Direktori pakej Laman Anaconda (mis. F: / Program Files / Anaconda2 / Lib / pakej laman dalam kes saya) mengandungi pakej Python yang mungkin anda import. Tujuan kami adalah menyalin dan menampal fail cv2.pyd ke direktori ini (supaya kami dapat menggunakan cv2 import dalam kod Python kami.).
Untuk melakukan ini, salin fail cv2.pyd…
Dari direktori OpenCV ini (bahagian awal mungkin sedikit berbeza pada mesin anda):
# Mesin Python 2.7 dan 64-bit: F: / opencv / build / python / 2.7 / x64 # Mesin Python 2.7 dan 32-bit: F: / opencv / build / python / 2.7 / x84
Ke direktori Anaconda ini (bahagian awal mungkin sedikit berbeza pada mesin anda):
F: / Program Files / Anaconda2 / Lib / pakej laman web
Setelah melakukan langkah ini, kita sekarang dapat menggunakan import cv2 dalam kod Python. TETAPI, kita masih perlu melakukan lebih banyak kerja agar FFMPEG (codec video) berfungsi (untuk membolehkan kita melakukan perkara seperti memproses video.)
Klik kanan pada "Komputer Saya" (atau "Ini PC" pada Windows 8.1) -> Properties klik kiri -> tab kiri "Advanced" -> klik kiri butang "Pemboleh ubah Persekitaran …". Tambahkan Pembolehubah Pengguna baru untuk menunjukkan OpenCV (sama ada x86 untuk sistem 32-bit atau x64 untuk sistem 64-bit.) Saya kini menggunakan mesin 64-bit.
32-bitOPENCV_DIRC: / opencv / build / x86 / vc12
64-bitOPENCV_DIRC: / opencv / build / x64 / vc12
Tambahkan% OPENCV_DIR% / bin ke PATH Pembolehubah Pengguna.
Sebagai contoh, pemboleh ubah pengguna PATH saya kelihatan seperti ini…
Sebelum:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Skrip
Selepas:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Skrip;% OPENCV_DIR% / bin
Ini sudah selesai! FFMPEG siap digunakan!
Langkah 4: Uji untuk mengesahkan
Kita perlu menguji sama ada kita sekarang boleh melakukan ini di Anaconda (melalui Spyder IDE):
- Import pakej OpenCV
- Gunakan utiliti FFMPEG (untuk membaca / menulis / memproses video)
Ujian 1: Bolehkah kita mengimport OpenCV?
Untuk mengesahkan bahawa Anaconda kini dapat mengimport pakej OpenCV-Python (iaitu, cv2), keluarkan ini di Konsol IPython:
import cv2
cetak cv2._ versi_
Sekiranya pakej cv2 diimport ok tanpa ralat, dan versi cv2 dicetak, maka kita semua bagus!
Ujian 2: Bolehkah kita menggunakan codec FFMPEG?
Letakkan sampel
input_video.mp4
fail video dalam direktori. Kami ingin menguji sama ada kami dapat:
- baca fail video.mp4 ini, dan
- tulis fail video baru (boleh.avi atau.mp4 dll.)
Untuk melakukan ini, kita perlu mempunyai kod python ujian, memanggilnya test.py. Letakkannya di direktori yang sama dengan sampel
input_video.mp4
fail.
Apakah ini
test.py
mungkin kelihatan seperti (Nota: terima kasih banyak atas cadangan Pete dan Warren di ruang komen - saya telah menggantikan kod ujian asal saya dengan - sila uji sendiri dan beritahu kami jika ini berfungsi lebih baik):
import cv2
cap = cv2. VideoCapture ("input_video.mp4") cap cap.isOpened () # Benar = berjaya membaca video. Salah - gagal membaca video. fourcc = cv2. VideoWriter_fourcc (* 'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) mencetak.isOpened () # True = berjaya menulis video. Salah - gagal menulis video. cap.release () out.release ()
Ujian ini SANGAT PENTING. Sekiranya anda ingin memproses fail video, anda perlu memastikan bahawa Anaconda / Spyder IDE dapat menggunakan FFMPEG (video codec). Saya mengambil masa beberapa hari untuk berjaya. Tetapi saya harap anda memerlukan lebih sedikit masa!:) Catatan: satu lagi petua yang sangat penting semasa menggunakan IDE Anaconda Spyder. Pastikan anda menyemak Direktori Kerja Semasa (CWD) !!!
Langkah 5: Buat Kod untuk Pengesanan Muka
Matlamat
Dalam sesi ini,
- Kami akan melihat asas pengesanan wajah menggunakan Haar Feature-based Cascade Classifiers
- Kami akan memberikan perkara yang sama untuk pengesanan mata dan lain-lain
Pengesanan Haar-cascade di OpenCV
Di sini kita akan menangani pengesanan. OpenCV sudah mengandungi banyak pengklasifikasi pra-latihan untuk wajah, mata, senyuman dan lain-lain. Fail XML tersebut disimpan dalam folder opencv / data / haarcascades / folder. Mari buat alat pengesan wajah dan mata dengan OpenCV. Pertama kita perlu memuatkan pengkelasan XML yang diperlukan. Kemudian muatkan gambar input kami (atau video) dalam mod skala abu-abu ATAU kita boleh menggunakan kamera (untuk pengesanan wajah masa nyata)
import numpy sebagai np
import cv2 face_cascade = cv2. CascadeClassifier ('F: / Files Program / opencv / sumber / data / haarcascades / haarcascade_frontalface_default.xml') eye_cascade = cv2. CascadeClassifier ('F: / Program Program / opencv / sumber / data / haarcascade.xml ') cap = cv2. VideoCapture (0) manakala 1: ret, img = cap.read () grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) face = face_cascade.detectMultiScale (kelabu, 1.5, 5) 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] eyes = eye_cascade.detectMultiScale (roi_gray) untuk (mis., ey, ew, eh) pada mata: cv2.rectangle (roi_color, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 2) cetak "found" + str (len (wajah)) + "face (s)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff jika k == 27: break cap.release () cv2.destroyAllWindows ()
Langkah 6: Buat Kod untuk Membuat Set Data
Kami melakukan pengecaman wajah, jadi anda memerlukan beberapa gambar wajah! Anda boleh membuat set data anda sendiri atau memulakan dengan salah satu pangkalan data wajah yang ada, https://face-rec.org/databases/ memberikan gambaran keseluruhan terkini. Tiga pangkalan data yang menarik adalah (bahagian penerangannya dipetik dari
- Pangkalan Data AT&T
- Yale Facedatabase A
- Facedatabase Yale yang diperluas B
DI SINI saya menggunakan set data saya sendiri …. dengan bantuan kod yang diberikan di bawah:
import numpy sebagai np
import cv2 face_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / sumber / data / haarcascades / haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) id = raw_input ('masukkan id pengguna') sampelN = 0; manakala 1: ret, img = cap.read () kelabu = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) face = face_cascade.detectMultiScale (grey, 1.3, 5) untuk (x, y, w, h) di wajah: sampleN = sampelN + 1; cv2.imwrite ("F: / Program Files / projek / face_rec / wajahData / Pengguna." + str (id) + "." + str (sampleN) + ".jpg", kelabu [y: y + h, x: x + w]) cv2. segi empat tepat (img, (x, y), (x + w, y + h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img', img) cv2.waitKey (1) jika sampleN> 20: break cap.release () cv2.destroyAllWindows ()
Langkah 7: Buat Kod untuk Melatih Pengecam
Buat fungsi untuk menyediakan set latihan
Sekarang, kita akan menentukan fungsi
getImagesWithID (jalan)
yang mengambil jalan mutlak ke pangkalan data gambar sebagai argumen input dan mengembalikan tuple dari 2 senarai, satu mengandungi wajah yang dikesan dan yang lain mengandungi label yang sesuai untuk wajah itu. Sebagai contoh, jika indeks ith dalam senarai wajah mewakili individu ke-5 dalam pangkalan data, maka lokasi ith yang sesuai dalam senarai label mempunyai nilai sama dengan 5.
Sekarang ubah wajah set data (yang dibuat pada langkah 6) menjadi fail.yml dengan bantuan kod yang diberikan di bawah:
import os
import numpy sebagai np import cv2 dari PIL import Image # Untuk pengecaman wajah kita akan LBPH Face Recognizer mengenali = cv2.createLBPHFaceRecognizer (); path = "F: / Program Files / projek / face_rec / faceData" def getImagesWithID (path): imagePaths = [os.path.join (path, f) untuk f in os.listdir (path)] # print image_path #getImagesWithID (path) wajah = ID = untuk imagePath di imagePaths: # Baca gambar dan tukar ke muka skala kelabuImg = Image.open (imagePath).convert ('L') faceNP = np.array (wajahImg, 'uint8') # Dapatkan label ID gambar = int (os.path.split (imagePath) [- 1].split (".") [1]) # Mengesan wajah dalam gambar face.append (faceNP) IDs.append (ID) cv2.imshow ("Menambah wajah untuk dilatih", faceNP) cv2.waitKey (10) return np.array (ID), Ids wajah, wajah = getImagesWithID (path) recognition.train (wajah, Id) pengecam.save ("F: / Fail Program / projek / face_rec / faceREC / trainingdata.yml") cv2.destroyAllWindows ()
dengan menggunakan kod ini semua dataset wajah diubah menjadi satu fail.yml….. lokasi path adalah ("F: / Program Files / projek / face_rec / faceREC / trainingdata.yml")
Langkah 8: Buat Kod untuk Mengenali Muka & Hasilnya
Guyzz ini adalah langkah terakhir di mana kita dapat membuat kod untuk mengenali wajah dengan bantuan kamera web anda. 1. merakam video dari cam 2. bandingkan dengan fail.yml anda
import numpy sebagai npimport cv2 face_cascade = cv2. CascadeClassifier ('F: / Program Files / opencv / sumber / data / haarcascades / haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) rec = cv2.createLBPHFace rec.load ("F: / Program Files / projek / face_rec / faceREC / trainingdata.yml") id = 0 font = cv2.cv. InitFont (cv2.cv. CV_FONT_HERSHEY_COMPLEX_SMALL, 5, 1, 0, 4) sementara 1: ret, img = cap.read () grey = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) face = face_cascade.detectMultiScale (grey, 1.5, 5) untuk (x, y, w, h) di wajah: cv2. segiempat (img, (x, y), (x + w, y + h), (255, 0, 0), 2) id, conf = rec.predict (kelabu [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" jika id = = 5: id = 'rahul' if id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y + h), fon, 255) cv2.imshow ('img', img) if cv2.waitKey (1) == ord ('q'): break cap.release ()
cv2.destroyAllWindows ()
dan akhirnya hasilnya akan muncul di depan mata anda …… anda juga boleh memuat turun fail zip dari bawah pautan: Klik di sini untuk memuat turun kodJadi, dalam arahan ini kami melakukan tugas pengesanan wajah + pengenalan menggunakan OpenCV…..jika anda seperti yang diarahkan ini….. plzzz melanggan saya dan memilih saya…..terima kasih kawan:)
Disyorkan:
Cermin Pengecaman Muka Dengan Petak Rahsia: 15 Langkah (dengan Gambar)
Cermin Pengecaman Muka Dengan Ruang Rahsia: Saya selalu tertarik dengan ruang rahsia yang sentiasa kreatif yang digunakan dalam cerita, filem, dan sejenisnya. Oleh itu, ketika saya melihat Peraduan Petak Rahsia, saya memutuskan untuk bereksperimen dengan idea itu sendiri dan membuat cermin biasa yang membuka
Pengecaman dan Pengecaman Wajah - Arduino Face ID Menggunakan OpenCV Python dan Arduino .: 6 Langkah
Pengecaman dan Pengecaman Wajah | Arduino Face ID Menggunakan OpenCV Python dan Arduino .: Pengenalan wajah AKA ID ID adalah salah satu ciri terpenting pada telefon bimbit pada masa kini. Oleh itu, saya mempunyai soalan " bolehkah saya mempunyai id wajah untuk projek Arduino saya " dan jawapannya adalah ya … Perjalanan saya dimulakan seperti berikut: Langkah 1: Akses ke kami
Pengecaman Muka ESP32 CAM Dengan Sokongan MQTT - AI-Thinker: 4 Langkah
Pengecaman Muka ESP32 CAM Dengan Sokongan MQTT | AI-Thinker: Halo! Saya ingin berkongsi kod saya untuk projek sekiranya saya memerlukan ESP CAM dengan Face recognition, yang dapat menghantar Data ke MQTT. Baiklah .. setelah mungkin selama 7 Jam mencari beberapa contoh kod dan mencari apa itu, saya mempunyai kesudahan
Sistem Keselamatan Pengecaman Muka untuk Peti Sejuk Dengan Raspberry Pi: 7 Langkah (dengan Gambar)
Sistem Keselamatan Pengecaman Muka untuk Peti Sejuk Dengan Raspberry Pi: Melayari internet saya mendapati bahawa harga untuk sistem keselamatan berbeza dari 150 $ hingga 600 $ ke atas, tetapi tidak semua penyelesaian (malah yang sangat mahal) dapat disatukan dengan yang lain alat pintar di rumah anda! Contohnya, anda tidak dapat menetapkan
Pengecaman Muka Masa Nyata: Projek Akhir ke Akhir: 8 Langkah (dengan Gambar)
Pengecaman Wajah Masa Nyata: Projek Akhir-ke-Akhir: Pada tutorial terakhir saya yang meneroka 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: Projek ini dilakukan dengan " Perpustakaan Penglihatan Komputer Sumber Terbuka & hebat ini