Სარჩევი:
- ნაბიჯი 1: დააინსტალირეთ Anaconda
- ნაბიჯი 2: ჩამოტვირთეთ ღია CV პაკეტი
- ნაბიჯი 3: გარემოს ცვლადების დაყენება
- ნაბიჯი 4: დაადასტურეთ ტესტი
- ნაბიჯი 5: შექმენით კოდი სახის ამოცნობისთვის
- ნაბიჯი 6: შექმენით კოდი მონაცემთა ნაკრების შესაქმნელად
- ნაბიჯი 7: შეიმუშავეთ კოდი აღიარების გადამზადებისათვის
- ნაბიჯი 8: შექმენით კოდი სახეების და შედეგების ამოცნობისთვის
ვიდეო: სახის ამოცნობა+ამოცნობა: 8 ნაბიჯი (სურათებით)
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:20
ეს არის მარტივი გამოვლენის სახე გამოვლენისა და ამოცნობის OpenCV კამერით. შენიშვნა: მე გავაკეთე ეს პროექტი სენსორული კონკურსისთვის და გამოვიყენე კამერა, როგორც სენსორი თვალყურის დევნისა და ამოცნობის სახეებისთვის. ასე რომ, ჩვენი მიზანი ამ სესიაზე, 1. დააინსტალირეთ ანაკონდა 2. ჩამოტვირთეთ ღია CV პაკეტი 3. დააყენეთ გარემოს ცვლადი 4. ტესტი დაადასტურეთ 5 შეიყვანეთ კოდი სახის ამოცნობისთვის 6. შეიყვანეთ კოდი მონაცემთა ნაკრების შესაქმნელად 7. გააკეთეთ კოდი ამოსაცნობი ტრენინგისათვის 8. გააკეთეთ კოდი სახის ამოცნობისა და შედეგისთვის.
ნაბიჯი 1: დააინსტალირეთ Anaconda
Anaconda არსებითად არის ლამაზად შეფუთული Python IDE, რომელიც იგზავნება ტონა სასარგებლო პაკეტებით, როგორიცაა NumPy, Pandas, IPython Notebook და ა.შ. როგორც ჩანს, ის ყველგან არის რეკომენდებული სამეცნიერო საზოგადოებაში. შეამოწმეთ ანაკონდა, რომ დააინსტალიროთ.
ნაბიჯი 2: ჩამოტვირთეთ ღია CV პაკეტი
პირველ რიგში, გადადით OpenCV ოფიციალურ საიტზე, რომ ჩამოტვირთოთ OpenCV სრული პაკეტი. შეარჩიეთ თქვენთვის სასურველი ვერსია (2.x ან 3.x). მე ვარ პითონ 2.x და OpenCV 2.x - ძირითადად იმიტომ, რომ სწორედ ასეა დადგენილი/დაფუძნებული OpenCV -Python გაკვეთილები.
ჩემს შემთხვევაში, მე ამოვიღე პაკეტი (არსებითად საქაღალდე) პირდაპირ ჩემს F დისკზე. (F: / opencv).
ნაბიჯი 3: გარემოს ცვლადების დაყენება
დააკოპირეთ და ჩასვით cv2.pyd ფაილი
Anaconda საიტის პაკეტების დირექტორია (მაგ. F: / Program Files / Anaconda2 / Lib / site-packages in my case) შეიცავს პითონის პაკეტებს, რომელთა შემოტანა შეგიძლიათ. ჩვენი მიზანია cv2.pyd ფაილის კოპირება და ჩასმა ამ დირექტორიაში (ასე რომ ჩვენ შეგვიძლია გამოვიყენოთ იმპორტი cv2 ჩვენს პითონის კოდებში.).
ამისათვის დააკოპირეთ cv2.pyd ფაილი…
ამ OpenCV დირექტორია (საწყისი ნაწილი შეიძლება ოდნავ განსხვავებული იყოს თქვენს აპარატზე):
# პითონის 2.7 და 64-ბიტიანი მანქანა: F: / opencv / build / python / 2.7 / x64# Python 2.7 და 32-ბიტიანი მანქანა: F: / opencv / build / python / 2.7 / x84
ამ ანაკონდას დირექტორია (საწყისი ნაწილი შეიძლება ოდნავ განსხვავებული იყოს თქვენს აპარატზე):
F: / Program Files / Anaconda2 / Lib / site-packages
ამ ნაბიჯის შესრულების შემდეგ ჩვენ ახლა შევძლებთ ვიყენოთ იმპორტი cv2 პითონის კოდში. მაგრამ, ჩვენ ჯერ კიდევ გვჭირდება ცოტა მეტი შრომა იმისათვის, რომ FFMPEG (ვიდეო კოდეკი) იმუშაოს (მოგვცეს საშუალება გავაკეთოთ ისეთი რამ, როგორიცაა ვიდეოების დამუშავება.)
დააწკაპუნეთ მარჯვენა ღილაკით "ჩემი კომპიუტერი" (ან "ეს კომპიუტერი" Windows 8.1)-> მარცხენა ღილაკით "თვისებები"-> მარცხენა ღილაკით "გაფართოებული" ჩანართი-> მარცხენა ღილაკი "გარემოს ცვლადები …" ღილაკი. დაამატეთ ახალი მომხმარებლის ცვლადი მიუთითეთ OpenCV (ან x86 32 ბიტიანი სისტემისთვის ან x64 64 ბიტიანი სისტემისთვის.) მე ამჟამად 64 ბიტიან აპარატზე ვარ.
32 ბიტიანი OPENCV_DIRC: / opencv / build / x86 / vc12
64 ბიტიანი OPENCV_DIRC: / opencv / build / x64 / vc12
დაამატეთ %OPENCV_DIR %\ bin მომხმარებლის ცვლადის გზას.
მაგალითად, ჩემი PATH მომხმარებლის ცვლადი ასე გამოიყურება…
ადრე:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts
შემდეგ:
F: / Users / Johnny / Anaconda; C: / Users / Johnny / Anaconda / Scripts;%OPENCV_DIR%\ bin
ეს არის ის, რაც ჩვენ დავასრულეთ! FFMPEG მზადაა გამოსაყენებლად!
ნაბიჯი 4: დაადასტურეთ ტესტი
ჩვენ უნდა შევამოწმოთ შეგვიძლია თუ არა ამის გაკეთება ანაკონდაში (Spyder IDE– ს საშუალებით):
- OpenCV პაკეტის იმპორტი
- გამოიყენეთ FFMPEG პროგრამა (ვიდეოების წასაკითხად/დასაწერად/დამუშავებისთვის)
ტესტი 1: შეგვიძლია შემოვიტანოთ OpenCV?
იმის დასაჯერებლად, რომ ანაკონდას ახლა შეუძლია OpenCV-Python პაკეტის იმპორტირება (კერძოდ, cv2), გაუშვით ეს IPython კონსოლში:
იმპორტი cv2
ბეჭდვა cv2._ ვერსია_
თუ პაკეტი cv2 იმპორტირებულია კარგად შეცდომების გარეშე და cv2 ვერსია დაბეჭდილია, მაშინ ჩვენ ყველანი კარგები ვართ!
ტესტი 2: შეგვიძლია გამოვიყენოთ FFMPEG კოდეკი?
მოათავსეთ ნიმუში
input_video.mp4
ვიდეო ფაილი დირექტორიაში. ჩვენ გვინდა შევამოწმოთ შეგვიძლია თუ არა:
- წაიკითხეთ ეს.mp4 ვიდეო ფაილი და
- ჩაწერეთ ახალი ვიდეო ფაილი (შეიძლება იყოს.avi ან.mp4 და ა.
ამისათვის ჩვენ გვჭირდება სატესტო პითონის კოდი, დავარქვათ test.py. განათავსეთ იგი იმავე დირექტორიაში, როგორც ნიმუში
input_video.mp4
ფაილი
Ეს არის ის, რაც
ტესტი. py
შეიძლება გამოიყურებოდეს (შენიშვნა: დიდი მადლობა პიტისა და უორენის წინადადებებს კომენტარების ველში - მე შევცვალე ჩემი ორიგინალური სატესტო კოდი მისით - გთხოვთ, თავად გამოსცადოთ და შეგვატყობინოთ, თუ ეს უკეთესად მუშაობს):
იმპორტი cv2
cap = cv2. VideoCapture ("input_video.mp4") cap cap.isOpened () # True = ვიდეოს წარმატებით წაკითხვა. ყალბი - ვიდეოს წაკითხვა ვერ ხერხდება. Fourcc = cv2. VideoWriter_fourcc (*'XVID') out = cv2. VideoWriter ("output_video.avi", Fourcc, 20.0, (640, 360)) print out.isOpened () # True = წარმატებით ჩაწერეთ ვიდეო ყალბი - ვიდეოს ჩაწერა ვერ მოხერხდა. cap.release () out.release ()
ეს ტესტი ძალიან მნიშვნელოვანია. თუ გსურთ ვიდეო ფაილების დამუშავება, თქვენ უნდა დარწმუნდეთ, რომ Anaconda / Spyder IDE– ს შეუძლია გამოიყენოს FFMPEG (ვიდეო კოდეკი). დღეები დამჭირდა, რომ გამეგრძელებინა მუშაობა. მაგრამ იმედი მაქვს ამას გაცილებით ნაკლები დრო დაგჭირდება!:) შენიშვნა: კიდევ ერთი ძალიან მნიშვნელოვანი რჩევა Anaconda Spyder IDE– ს გამოყენებისას. დარწმუნდით, რომ შეამოწმეთ მიმდინარე სამუშაო დირექტორია (CWD) !!!
ნაბიჯი 5: შექმენით კოდი სახის ამოცნობისთვის
მიზანი
ამ სესიაზე,
- ჩვენ ვნახავთ სახის გამოვლენის საფუძვლებს Haar Feature დაფუძნებული კასკადის კლასიფიკატორების გამოყენებით
- ჩვენ იგივე გავაგრძელებთ თვალის გამოვლენისთვის და ა
ჰარის კასკადის გამოვლენა OpenCV– ში
აქ ჩვენ გავუმკლავდებით გამოვლენას. OpenCV უკვე შეიცავს ბევრ წინასწარ მომზადებულ კლასიფიკატორს სახის, თვალების, ღიმილის და ა.შ. ეს XML ფაილები ინახება opencv/data/haarcascades/საქაღალდეში. მოდით შევქმნათ სახის და თვალის დეტექტორი OpenCV– ით. ჯერ ჩვენ უნდა ჩავტვირთოთ საჭირო XML კლასიფიკატორები. შემდეგ ჩატვირთეთ ჩვენი შეყვანის სურათი (ან ვიდეო) ნაცრისფერი მასშტაბის რეჟიმში ან შეგვიძლია გამოვიყენოთ კამერა (რეალურ დროში სახის გამოვლენისთვის)
იმპორტირებული numpy როგორც np
იმპორტი cv2 face_cascade = cv2. CascadeClassifier ('F:/პროგრამის ფაილები/opencv/წყაროები/მონაცემები/haarcascades/haarcascade_frontalface_default.xml') eye_cascade = cv2. CascadeClassifier ('F:/პროგრამის ფაილები/opencv/წყაროები/მონაცემები/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/haarcascades/hacarascade.xml ') cap = cv2. VideoCapture (0) ხოლო 1: ret, img = cap.read () ნაცრისფერი = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) სახეები = face_cascade.detectMultiScale (ნაცრისფერი, 1.5, 5) for (x, y, w, h) სახეებში: cv2. მართკუთხედი (img, (x, y), (x+w, y+h), (255, 0, 0), 2) roi_gray = ნაცრისფერი [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) in eyes: cv2.rectangle (roi_color, (ex, ey), (ex +ew, ey +eh), (0, 255, 0), 2) print "found" +str (len (სახეები)) +"face (s)" cv2.imshow ('img', img) k = cv2.waitKey (30) & 0xff თუ k == 27: break cap.release () cv2.destroyAllWindows ()
ნაბიჯი 6: შექმენით კოდი მონაცემთა ნაკრების შესაქმნელად
ჩვენ ვაკეთებთ სახის ამოცნობას, ასე რომ თქვენ დაგჭირდებათ სახის სურათები! თქვენ შეგიძლიათ შექმნათ თქვენი საკუთარი მონაცემთა ნაკრები ან დაიწყოთ სახის ერთ-ერთი არსებული მონაცემთა ბაზით, https://face-rec.org/databases/ გაძლევთ განახლებულ მიმოხილვას. სამი საინტერესო მონაცემთა ბაზა (აღწერილობის ნაწილები ციტირებულია https://face-rec.org– დან):
- AT&T Facedatabase
- იელის სახის ბაზა A
- გაფართოებული იელის ფასადის მონაცემთა ბაზა B
აქ მე ვიყენებ ჩემს მონაცემთა ნაკრებს…. კოდის დახმარებით, რომელიც მოცემულია ქვემოთ:
იმპორტირებული numpy როგორც np
იმპორტი cv2 face_cascade = cv2. CascadeClassifier ('F:/პროგრამის ფაილები/opencv/წყაროები/მონაცემები/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) id = raw_input ('enter id id') sampleN = 0; ხოლო 1: ret, img = cap.read () ნაცრისფერი = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) სახეები = face_cascade.detectMultiScale (ნაცრისფერი, 1.3, 5) for (x, y, w, h) სახეებში: sampleN = ნიმუში N+1; cv2.imwrite ("F:/პროგრამის ფაილები/პროექტები/face_rec /acesData/მომხმარებელი."+str (id)+"."+str (sampleN)+".jpg", ნაცრისფერი [y: y+h, x: x+w]) cv2. მართკუთხედი (img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKey (100) cv2.imshow ('img', img) cv2.wait გასაღები (1) თუ ნიმუში N> 20: შესვენება cap.release () cv2.destroyAllWindows ()
ნაბიჯი 7: შეიმუშავეთ კოდი აღიარების გადამზადებისათვის
შექმენით სასწავლო ნაკრების მომზადების ფუნქცია
ახლა ჩვენ განვსაზღვრავთ ფუნქციას
getImagesWithID (გზა)
რომელიც იღებს სურათის მონაცემთა ბაზის აბსოლუტურ გზას შეყვანის არგუმენტის სახით და აბრუნებს ორ სიას, რომელთაგან ერთი შეიცავს აღმოჩენილ სახეებს, ხოლო მეორე შეიცავს შესაბამის ეტიკეტს ამ სახისთვის. მაგალითად, თუ სახეების ჩამონათვალში ith ინდექსი წარმოადგენს მონაცემთა ბაზის მე -5 ინდივიდს, მაშინ ეტიკეტების სიაში შესაბამის ადგილსამყოფელს აქვს 5 -ის ტოლი მნიშვნელობა.
ახლა გადააკეთეთ მონაცემთა ნაკრების სახეები (რომელიც იქმნება მე –6 საფეხურზე).yml ფაილში კოდის გამოყენებით, რომელიც მოცემულია ქვემოთ:
იმპორტი os
იმპორტის numpy როგორც np იმპორტი cv2 PIL იმპორტიდან სურათი # სახის ამოცნობისთვის ჩვენ LBPH Face Recognizer ამოცნობს = cv2.createLBPHFaceRecognizer (); path = "F:/პროგრამის ფაილები/პროექტები/face_rec/faceData" def getImagesWithID (path): imagePaths = [os.path.join (path, f) for f in os.listdir (path)] # print image_path #getImagesWithID (გზა) სახეები = IDs = imagePath– ში imagePaths: # წაიკითხეთ სურათი და გადააკეთეთ ნაცრისფერ ფერებში # მიიღეთ გამოსახულების ID- ის იარლიყი = int (os.path.split (imagePath) [-1]. გაყოფა (".") [1]) # გამოსახულების გამოსახულების სახეების ამოცნობა. დამატება (faceNP) IDs.append (ID) cv2.imshow ("სახეების დამატება გადასაადგილებლად", faceNP) cv2.waitKey (10) დაბრუნება np.array (ID), სახეების იდები, სახეები = getImagesWithID (path) ამოცნობა. ტრენერი (სახეები, იდები) ამოცნობა. შენახვა ("F:/პროგრამის ფაილები/პროექტები/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()
ამ კოდის გამოყენებით ყველა სახის მონაცემთა ნაკრები გარდაიქმნება ერთ.yml ფაილში …..გზის მდებარეობაა ("F:/პროგრამის ფაილები/პროექტები/face_rec/faceREC/trainingdata.yml")
ნაბიჯი 8: შექმენით კოდი სახეების და შედეგების ამოცნობისთვის
Guyzz ეს არის ბოლო ნაბიჯი, რომელშიც ჩვენ შეგვიძლია შევქმნათ კოდი თქვენი ვებკამერის დახმარებით სახეების ამოცნობისათვის. ამ ნაბიჯს აქვს ორი ოპერაცია, რომლებიც აპირებენ შესრულებას…. 1. ვიდეოს გადაღება კამერიდან 2. შეადარეთ თქვენს.yml ფაილს
იმპორტი numpy როგორც npimport cv2 face_cascade = cv2. CascadeClassifier ('F:/პროგრამის ფაილები/opencv/წყაროები/მონაცემები/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture (0) rec = cv2.createLBPHFaceRecizer; rec.load ("F:/პროგრამის ფაილები/პროექტები/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 () ნაცრისფერი = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) სახეები = face_cascade.detectMultiScale (ნაცრისფერი, 1.5, 5) for (x, y, w, h) სახეებში: cv2.rectangle (img, (x, y), (x+w, y+h), (255, 0, 0), 2) id, conf = rec. წინასწარმეტყველება (ნაცრისფერი [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" if 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) if cv2.waitKey (1) == ord ('q'): შესვენება cap.release ()
cv2.destroyAllWindows ()
და საბოლოოდ შედეგი გამოჩნდება თქვენს თვალწინ …… თქვენ ასევე შეგიძლიათ გადმოწეროთ zip ფაილი ბმულიდან: დააწკაპუნეთ აქ კოდების ჩამოსატვირთად მოსწონს ეს სასწავლო ….. plzzz გამომიწერე და ხმა მომცე … მადლობა მეგობრებო:)
გირჩევთ:
MATLAB მარტივი სახის ამოცნობა: 4 ნაბიჯი
MATLAB Easy Face Detection: ამ ინსტრუქციის მთავარი მიზანია აჩვენოს რამდენად ადვილი იქნება სურათის დამუშავება, MATLAB– ის დახმარებით სახის გამოვლენა და თვალთვალი იყო მნიშვნელოვანი და აქტიური კვლევითი სფერო, ამიტომ ამიტომაც ვაპირებ ახსნას როგორ შეიძლება ამის გაკეთება
Opencv სახის ამოცნობა, სწავლება და ამოცნობა: 3 ნაბიჯი
Opencv სახის ამოცნობა, სწავლება და ამოცნობა: OpenCV არის ღია კოდის კომპიუტერული ხედვის ბიბლიოთეკა, რომელიც ძალიან პოპულარულია გამოსახულების დამუშავების ძირითადი ამოცანების შესასრულებლად, როგორიცაა დაბინდვა, სურათის შერწყმა, სურათის გაძლიერება, ასევე ვიდეოს ხარისხი, ბარიერი და ა.შ. სურათის დამუშავების გარდა, ეს პროვოცირებს
სახის ამოცნობა და ამოცნობა - Arduino Face ID OpenCV პითონისა და Arduino– ს გამოყენებით .: 6 ნაბიჯი
სახის ამოცნობა და ამოცნობა | Arduino Face ID OpenCV პითონისა და არდუინოს გამოყენებით: სახის ამოცნობა AKA face ID არის ერთ -ერთი ყველაზე მნიშვნელოვანი ფუნქცია მობილურ ტელეფონებზე დღეს. ასე რომ, მე მქონდა შეკითხვა " შემიძლია ვიპოვო სახის ID ჩემი Arduino პროექტისთვის " და პასუხი არის დიახ … ჩემი მოგზაურობა დაიწყო შემდეგნაირად: ნაბიჯი 1: ჩვენთან წვდომა
კარის ზარი სახის ამოცნობა: 7 ნაბიჯი (სურათებით)
კარის ზარი სახის აღიარებით: მოტივაცია ბოლო დროს ჩემს ქვეყანაში მოხდა ძარცვის ტალღა, რომელიც მიზნად ისახავს ხანდაზმულებს საკუთარ სახლებში. ჩვეულებრივ, დაშვებას აძლევენ თავად ოკუპანტები, ვინაიდან სტუმრები ირწმუნებენ მათ, რომ ისინი აღმზრდელები/ექთნები არიან. ის
რეალურ დროში სახის ამოცნობა: ბოლომდე დასრულებული პროექტი: 8 ნაბიჯი (სურათებით)
რეალურ დროში სახის ამოცნობა: ბოლომდე დასრულებული პროექტი: OpenCV– ს შესწავლის ჩემს ბოლო გაკვეთილზე ვისწავლეთ AUTOMATIC VISION OBJECT TRACKING. ახლა ჩვენ გამოვიყენებთ ჩვენს PiCam– ს სახეების რეალურ დროში ამოცნობისთვის, როგორც ქვემოთ ხედავთ: ეს პროექტი გაკეთდა ამ ფანტასტიკური "ღია კოდის კომპიუტერული ხედვის ბიბლიოთეკის" გამოყენებით