Endi barcha ishga tushirishlarimiz hal qilindi, keling, diskdan tasvirni yuklaymiz va yuz ROIlarini aniqlaymiz: - Endi barcha ishga tushirishlarimiz hal qilindi, keling, diskdan tasvirni yuklaymiz va yuz ROIlarini aniqlaymiz:
- # kirish tasvirini yuklang va tasvir uchun kirish blokini yarating
- rasm = cv2. imread ( args [ "tasvir" ])
- ( h, w ) = tasvir.shakl [ : 2 ]
- blob = cv2.dnn. blobFromImage ( rasm, 1.0 , ( 300 , 300 ) ,
- ( 104,0 , 177,0 , 123,0 ))
- # blobni tarmoq orqali o'tkazing va yuzni aniqlashni oling
- chop etish ( "[INFO] yuzni aniqlashni hisoblash..." )
- faceNet. setInput ( blob )
- aniqlashlar = faceNet. oldinga ()
- 37-40 satrlar kiritilgan ma'lumotlarni yuklaydi va oldindan qayta ishlaydi--rasm
- . Biz OpenCV dan foydalanamizblobFromImage
- usul - mening qo'llanmamda blobFromImage haqida ko'proq o'qing .
Rasmimizdagi yuzlarni aniqlash uchun biz yuboramizblob - Rasmimizdagi yuzlarni aniqlash uchun biz yuboramizblob
- bizning CNN orqali, natijada ro'yxatianiqlashlar
- . Keling,
- yuzning ROI aniqlashlarini ko'rib chiqaylik:
- Aniqlanishlar ustidan # halqa
- diapazondagi i uchun ( 0 , detections.shape [ 2 ] ) :
- # bilan bog'liq ishonchni (ya'ni, ehtimollik) chiqarib oling
- # bashorat
- ishonch = aniqlashlar [ 0 , 0 , i, 2 ]
- # ishonchni ta'minlash orqali zaif aniqlashlarni filtrlang
- # minimal ishonchdan kattaroq
- if confidence > args [ "confidence" ] :
- # uchun chegara maydonining (x, y)-koordinatalarini hisoblang
- # ob'ekt
- quti = aniqlashlar [ 0 , 0 , i, 3 : 7 ] * np. massiv ([ w, h, w, h ])
- ( startX, startY, endX, endY ) = quti. astype ( "int" )
- # yuzning ROI-ni ajratib oling va undan keyin blob hosil qiling
- # *faqat* yuz ROI
- yuz = tasvir [ startY: endY, startX: endX ]
- faceBlob = cv2.dnn. blobFromImage ( yuz, 1.0 , ( 227 , 227 ) ,
- ( 78.4263377603 , 87.7689143744 , 114.895847746 ) ,
- swapRB = noto'g'ri )
Do'stlaringiz bilan baham: |