Mündəricat:
- Addım 1: Anaconda qurun
- Addım 2: Açıq CV Paketini Yükləyin
- Addım 3: Ətraf Mühit Dəyişənlərini təyin edin
- Addım 4: Təsdiq etmək üçün test edin
- Addım 5: Üz Tanıma üçün Kod hazırlayın
- Addım 6: Məlumat dəsti yaratmaq üçün kod hazırlayın
- Addım 7: Tanınmaçını öyrətmək üçün kod hazırlayın
- Addım 8: Üzləri və Nəticəni tanımaq üçün Kod hazırlayın
Video: Üz Tanıma+Tanıma: 8 Addım (Şəkillərlə birlikdə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:48
Bu, bir kameradan OpenCV ilə üz tanıma və tanıma işlərinin sadə bir nümunəsidir. QEYD: SENSOR MÜSABİQƏSİ ÜÇÜN BU LAYİHƏDİ VƏ YÜZLƏRİ İZLƏYİCİ VƏ TANIMA SENSÖRÜ KAMERA İSTİFADƏ ETDİM. Beləliklə, Məqsədimiz Bu sessiyada 1. Anaconda qurun 2. Açıq CV Paketini yükləyin 3. Ətraf Mühit Dəyişənlərini təyin edin 4. 5 təsdiq etmək üçün test edin. Üz tanıma kodu yaradın 6. Məlumat toplusu yaratmaq üçün kod yaradın 7. Tanıyanı öyrətmək üçün kod hazırlayın 8. Üzləri tanımaq üçün kod yaradın və Nəticə.
Addım 1: Anaconda qurun
Anaconda, əslində NumPy, Pandas, IPython Notebook və s. Kimi faydalı paketlərlə birlikdə göndərilən gözəl bir şəkildə paketlənmiş Python IDE -dir. Elmi ictimaiyyətin hər yerində tövsiyə olunur. Quraşdırmaq üçün Anaconda -ya baxın.
Addım 2: Açıq CV Paketini Yükləyin
Əvvəlcə tam OpenCV paketini yükləmək üçün rəsmi OpenCV saytına daxil olun. İstədiyiniz versiyanı seçin (2.x və ya 3.x). Python 2.x və OpenCV 2.x üzərindəyəm - əsasən OpenCV -Python Dərsliklərinin bu şəkildə qurulması/əsaslandığı üçün.
Mənim vəziyyətimdə, paketi (əslində bir qovluq) birbaşa F sürücümə çıxartdım. (F: / opencv).
Addım 3: Ətraf Mühit Dəyişənlərini təyin edin
Cv2.pyd faylını kopyalayın və yapışdırın
Anaconda Site-paketləri qovluğunda (məsələn, F: / Program Files / Anaconda2 / Lib / site-packages) idxal edə biləcəyiniz Python paketləri var. Məqsədimiz, cv2.pyd faylını bu qovluğa kopyalayıb yapışdırmaqdır (Python kodlarımızda idxal cv2 -dən istifadə etmək üçün.).
Bunu etmək üçün cv2.pyd faylını kopyalayın …
Bu OpenCV kataloqundan (başlanğıc hissəsi maşınınızda bir az fərqli ola bilər):
# Python 2.7 və 64 bitlik maşın: F: / opencv / build / python / 2.7 / x64# Python 2.7 və 32 bitli maşın: F: / opencv / build / python / 2.7 / x84
Bu Anaconda kataloquna (başlanğıc hissəsi maşınınızda bir az fərqli ola bilər):
F: / Program Files / Anaconda2 / Lib / site-paketləri
Bu addımı atdıqdan sonra indi Python kodunda import cv2 istifadə edə biləcəyik. AMMA, FFMPEG -in (video codec) işləməsini təmin etmək üçün hələ də bir az daha çox iş görməliyik (videoları emal etmək kimi şeylər etməyimizə imkan verir.)
"Kompüterim" düyməsini (və ya Windows 8.1-də "Bu PC") sağ vurun-> Xüsusiyyətləri sol vurun-> "Ətraflı" sekmesini sol vurun-> "Ətraf Mühit Dəyişənləri …" düyməsini sol vurun. Yeni İstifadəçi Dəyişənini əlavə edin. OpenCV-yə işarə etmək üçün (ya 32 bitlik sistem üçün x86, ya da 64 bitlik sistem üçün x64.) Hal-hazırda 64 bitlik bir maşındayam.
32-bitOPENCV_DIRC: / opencv / build / x86 / vc12
64-bitOPENCV_DIRC: / opencv / build / x64 / vc12
İstifadəçi Dəyişən Yoluna %OPENCV_DIR %\ bin əlavə edin.
Məsələn, mənim PATH istifadəçi dəyişənim belə görünür …
Əvvəl:
F: / İstifadəçilər / Johnny / Anaconda; C: / İstifadəçilər / Johnny / Anaconda / Skriptlər
Sonra:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts;%OPENCV_DIR%\ bin
İşimiz budur! FFMPEG istifadəyə hazırdır!
Addım 4: Təsdiq etmək üçün test edin
İndi bunları Anaconda'da (Spyder IDE vasitəsilə) edə biləcəyimizi sınamalıyıq:
- OpenCV paketini idxal edin
- FFMPEG yardım proqramından istifadə edin (videoları oxumaq/yazmaq/emal etmək üçün)
Test 1: OpenCV idxal edə bilərikmi?
Anaconda'nın OpenCV-Python paketini (cv2) idxal edə biləcəyini təsdiqləmək üçün, bunları IPython Konsolunda verin:
idxal cv2
cv2._ versiyasını çap edin
Cv2 paketi heç bir səhv olmadan tamam idxal olunursa və cv2 versiyası çap olunarsa, hamımız yaxşıyıq!
Test 2: FFMPEG codecindən istifadə edə bilərikmi?
Bir nümunə qoyun
giriş_video.mp4
bir qovluqdakı video fayl. Bacardığımızı yoxlamaq istəyirik:
- bu.mp4 video faylını oxuyun və
- yeni bir video faylı yazın (.avi və ya.mp4 və s. ola bilər)
Bunu etmək üçün test python koduna sahib olmalıyıq, ona test.py deyin. Nümunə ilə eyni qovluğa yerləşdirin
giriş_video.mp4
fayl.
Bu nədir
test.py
kimi görünə bilər (Qeyd: Pete və Warrenin şərh sahəsindəki təklifləri sayəsində - orijinal test kodumu onunla əvəz etdim - özünüz sınayın və bunun daha yaxşı işlədiyini bizə bildirin):
idxal cv2
cap = cv2. VideoCapture ("input_video.mp4") cap.isOpened () # True = videonu uğurla oxuyun. Yanlış - videonu oxumaq. fourcc = cv2. VideoWriter_fourcc (*'XVID') out = cv2. VideoWriter ("output_video.avi", fourcc, 20.0, (640, 360)) print.isOpened () # True = videonu uğurla yaz. Yanlış - video yaza bilməyin. cap.release () out.release ()
Bu test ÇOX ƏHƏMİYYƏTLİDİR. Video fayllarını işləmək istəyirsinizsə, Anaconda / Spyder IDE -nin FFMPEG (video codec) istifadə edə biləcəyini təmin etməlisiniz. İşləməyim üçün günlər lazım oldu. Ancaq ümid edirəm ki, sizə daha az vaxt lazımdır!:) Qeyd: Anaconda Spyder IDE -dən istifadə edərkən daha çox vacib bir ipucu. Cari İş Kataloğunu (CWD) yoxladığınızdan əmin olun !!!
Addım 5: Üz Tanıma üçün Kod hazırlayın
Məqsəd
Bu sessiyada,
- Haar Feature-based Cascade Classifiers istifadə edərək üz tanıma əsaslarını görəcəyik
- Eyni şeyi göz tanıma və s. Üçün uzadacağıq
OpenCV-də Haar-kaskad aşkarlanması
Burada aşkarlama ilə məşğul olacağıq. OpenCV artıq üz, göz, gülüş və s. Üçün bir çox əvvəlcədən öyrədilmiş təsnifatçını ehtiva edir. Bu XML faylları opencv/data/haarcascades/qovluğunda saxlanılır. OpenCV ilə üz və göz detektoru yaradaq. İlk olaraq lazım olan XML təsnifatlarını yükləməliyik. Sonra giriş şəklimizi (və ya videomuzu) boz rəngli rejimdə yükləyin və ya kameradan istifadə edə bilərik (Real vaxt üz tanıma üçün)
np kimi numpy idxal edin
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/haarcade/data/.xml ') cap = cv2. VideoCapture (0) isə 1: ret, img = cap.read () boz = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) üzlər = face_cascade.detectMultiScale (boz, 1.5, 5) (üçün) 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] eyes = eye_cascade.detectMultiScale (roi_gray) for (ex, ey, ew, eh) for eyes: cv2.dörtbucaq (roi_color, (ex, ey), (ex +ew, ey +eh), (0, 255, 0), 2) print "found" +str (len (face)) +"face (s)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff əgər k == 27: break cap.release () cv2.destroyAllWindows ()
Addım 6: Məlumat dəsti yaratmaq üçün kod hazırlayın
Üz tanıma ilə məşğuluq, buna görə də bəzi üz şəkillərinə ehtiyacınız olacaq! Ya öz məlumat bazanızı yarada bilərsiniz, ya da mövcud üz verilənlər bazalarından birindən başlaya bilərsiniz, https://face-rec.org/databases/ sizə müasir bir baxış təqdim edir. Üç maraqlı verilənlər bazasıdır (təsvirin hissələri https://face-rec.org saytından alınmışdır):
- AT&T Facedatabase
- Yale Facedatabase A.
- Genişləndirilmiş Yale Facedatabase B
BURADA öz veritabanımdan istifadə edirəm …. aşağıda göstərilən kodun köməyi ilə:
np kimi numpy idxal edin
cv2 face_cascade = cv2. CascadeClassifier ('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) id = raw_input ('user id daxil edin) sampleN = 0; while 1: ret, img = cap.read () boz = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) üzlər = face_cascade.detectMultiScale (boz, 1.3, 5) üzlərində (x, y, w, h): sampleN = nümunə N+1; cv2.imwrite ("F:/Program Files/projects/face_rec/facesData/User."+str (id)+"."+str (sampleN)+".jpg", boz [y: y+h, x: x+w]) cv2.dörtgen (img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img'), img) cv2.waitKey (1) əgər sampleN> 20: cap.release () cv2.destroyAllWindows ()
Addım 7: Tanınmaçını öyrətmək üçün kod hazırlayın
Təlim dəstini hazırlamaq üçün bir funksiya yaradın
İndi bir funksiyanı təyin edəcəyik
getImagesWithID (yol)
ki, görüntü verilənlər bazasına mütləq yolu giriş arqumenti olaraq götürür və biri aşkar edilmiş üzləri, digəri isə həmin üz üçün müvafiq etiketi ehtiva edən 2 siyahı tuplunu qaytarır. Məsələn, üz siyahısındakı ith indeksi verilənlər bazasındakı 5 -ci fərdi təmsil edirsə, etiketlər siyahısındakı müvafiq ith yeri 5 -ə bərabərdir.
İndi verilənlər bazası üzlərini (6 -cı addımda yaradılmışdır) aşağıda verilmiş kodun köməyi ilə.yml faylına çevirin:
id id
PIL idxalından nv idxal cv2 olaraq numpy import Image # Üz tanıma üçün LBPH Üz Tanıma tanıyıcısı = 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 (yol) üzləri = IDP = imagePaths -də imagePath üçün: # Şəkli oxuyun və boz rəngli üzlərə çevirinImg = Image.open (imagePath).convert ('L') faceNP = np.array (facesImg, 'uint8') # Şəkil ID etiketini əldə edin = int (os.path.split (imagePath) [-1]. Split (".") [1]) # Şəkildəki üzü aşkar edin. (ID) cv2.imshow ("Tərbiyə üçün üzlər əlavə olunur", faceNP) cv2.waitKey (10) np.array (ID -lər) qaytarır, Id -lər, sifətlər = getImagesWithID (yol) tanıyıcı.train (üzlər, idlər) tanıyıcı.sadda saxla) ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()
bu kodu istifadə edərək, bütün üz verilənlər bazası tək bir.yml faylına çevrilir ….. yolun yeri ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml")
Addım 8: Üzləri və Nəticəni tanımaq üçün Kod hazırlayın
Guyzz, veb kameranızın köməyi ilə üzləri tanımaq üçün kod yarada biləcəyimiz son addımdır BU ADIMDA İFASA GƏTƏCƏK İKİ ƏMƏLİYYAT VAR …. 1. kameradan videonun çəkilməsi 2..yml faylınızla müqayisə edin
npimport cv2 face_cascade = cv2. CcadeClassifier ('F:/Program Files/opencv/source/data/haarcascades/haarcascade_frontalface_default.xml') kimi numpy idxal edin = cv2. VideoCapture (0) rec = cv2.createLBPizer rec.load ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml") id = 0 font = cv2.cv. InitFont (cv2.cv. CV_FONT_HERSHEY_COMPLEX_SMALL, 5, 1, 0, 4) 1: ret, img = cap.read () boz = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) üzlər = üzlərdə (x, y, w, h) üçün face_cascade.detectMultiScale (boz, 1.5, 5): cv2.dörtgen (img, (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf = rec.predict (boz [y: y+h, x: x+w]) əgər (id == 2): id == 1 olarsa id = "alok": id == 3 olarsa id = "alok": id == 4 olarsa id = "anjali": id = "Gaurav" id = = 5: id = 'rahul' id == 6: id = "akshay" cv2.cv. PutText (cv2.cv.fromarray (img), str (id), (x, y+h), font, 255) cv2.imshow ('img', img) cv2.waitKey (1) == ord ('q'): break cap.release ()
cv2.destroyAllWindows ()
və nəhayət nəticə gözlərinizin önündə görünəcək …… zip faylını aşağıdakı linkdən də yükləyə bilərsiniz: Kodları yükləmək üçün bura daxil olun. Beləliklə, bu təlimatda OpenCV istifadə edərək üz tanıma+tanıma vəzifəsini yerinə yetirdik …. bu təlimat verən kimi ….. plzzz abunə olun və mənə səs verin …… təşəkkürlər dostlar:)
Tövsiyə:
HuskyLens istifadə edərək Süni Zəka və Görüntü Tanıma: 6 Addım (Şəkillərlə birlikdə)
HuskyLens istifadə edərək Süni Zəka və Görüntü Tanıma: Hey, nə var, uşaqlar! Akarsh burada CETech -dən. Bu layihədə DFRobot -dan HuskyLens -ə nəzər salacağıq. Süni intellektlə, məsələn, Üz Tanıma kimi bir çox əməliyyatları yerinə yetirə bilən AI ilə işləyən kamera moduludur
K210 lövhələri və Arduino IDE/Micropython ilə görüntü tanıma: 6 addım (şəkillərlə birlikdə)
K210 Lövhələri və Arduino IDE/Micropython ilə Görüntü Tanıma: Artıq Sipeed Maix Bit -də OpenMV demolarının necə işlədiləcəyi ilə bağlı bir məqalə yazmışam və bu lövhə ilə obyekt aşkarlama demosunun videosunu da çəkmişəm. İnsanların verdikləri bir çox suallardan biri budur ki, neyron şəbəkəsinin qeyri -adi bir obyekti necə tanıyım
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ş
VRBOT (Səs Tanıma Robotu): 10 Adım (Şəkillərlə birlikdə)
VRBOT (Səs Tanıma Robotu): Bu Təlimat kitabında səslə, yəni Səs Tanıma ilə idarə olunan bir robot (daha çox RC avtomobili kimi) düzəldəcəyik. Sizə başqa detallar verməyə başlamazdan əvvəl bunun Səs Tanıma olduğunu bilmək lazımdır, bu da Danışıq Tanıma deyil