विषयसूची:
- चरण 1: एनाकोंडा स्थापित करें
- चरण 2: ओपन सीवी पैकेज डाउनलोड करें
- चरण 3: पर्यावरण चर सेट करें
- चरण 4: पुष्टि करने के लिए परीक्षण करें
- चरण 5: फेस डिटेक्शन के लिए कोड बनाएं
- चरण 6: डेटा सेट बनाने के लिए कोड बनाएं
- चरण 7: पहचानकर्ता को प्रशिक्षित करने के लिए कोड बनाएं
- चरण 8: चेहरे और परिणाम को पहचानने के लिए कोड बनाएं
वीडियो: चेहरा पहचान+पहचान: 8 कदम (चित्रों के साथ)
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:23
यह कैमरे से ओपनसीवी के साथ फेस डिटेक्शन और रिकग्निशन चलाने का एक सरल उदाहरण है। नोट: मैंने इस परियोजना को सेंसर प्रतियोगिता के लिए बनाया है और मैंने कैमरे का उपयोग सेंसर के रूप में ट्रैक और पहचान के लिए किया है। इसलिए, इस सत्र में हमारा लक्ष्य, 1. एनाकोंडा स्थापित करें 2. ओपन सीवी पैकेज डाउनलोड करें 3. पर्यावरण चर सेट करें 4. पुष्टि करने के लिए परीक्षण करें। चेहरे की पहचान के लिए कोड बनाएं 6. डेटा सेट बनाने के लिए कोड बनाएं 7. पहचानकर्ता को प्रशिक्षित करने के लिए कोड बनाएं 8. चेहरे और परिणाम को पहचानने के लिए कोड बनाएं।
चरण 1: एनाकोंडा स्थापित करें
एनाकोंडा अनिवार्य रूप से एक अच्छी तरह से पैक किया गया पायथन आईडीई है जिसे कई उपयोगी पैकेजों के साथ भेजा जाता है, जैसे कि न्यूमपी, पांडा, आईपीथॉन नोटबुक, आदि। ऐसा लगता है कि वैज्ञानिक समुदाय में हर जगह इसकी सिफारिश की जाती है। इसे स्थापित करने के लिए एनाकोंडा देखें।
चरण 2: ओपन सीवी पैकेज डाउनलोड करें
सबसे पहले, पूरा ओपनसीवी पैकेज डाउनलोड करने के लिए आधिकारिक ओपनसीवी साइट पर जाएं। एक संस्करण चुनें जिसे आप पसंद करते हैं (2.x या 3.x)। मैं पायथन 2.x और ओपनसीवी 2.x पर हूं - मुख्यतः क्योंकि ओपनसीवी-पायथन ट्यूटोरियल इस तरह से सेटअप/आधारित हैं।
मेरे मामले में, मैंने सीधे अपने एफ ड्राइव पर पैकेज (अनिवार्य रूप से एक फ़ोल्डर) निकाला है। (एफ:\ओपनसीवी)।
चरण 3: पर्यावरण चर सेट करें
cv2.pyd फ़ाइल को कॉपी और पेस्ट करें
एनाकोंडा साइट-पैकेज निर्देशिका (जैसे F:\Program Files\Anaconda2\Lib\site-packages मेरे मामले में) में पायथन पैकेज शामिल हैं जिन्हें आप आयात कर सकते हैं। हमारा लक्ष्य cv2.pyd फ़ाइल को इस निर्देशिका में कॉपी और पेस्ट करना है (ताकि हम अपने पायथन कोड में आयात cv2 का उपयोग कर सकें।)
ऐसा करने के लिए, cv2.pyd फ़ाइल की प्रतिलिपि बनाएँ…
इस ओपनसीवी निर्देशिका से (शुरुआती भाग आपकी मशीन पर थोड़ा अलग हो सकता है):
# पायथन 2.7 और 64-बिट मशीन: F:\opencv\build\python\2.7\x64# पायथन 2.7 और 32-बिट मशीन: F:\opencv\build\python\2.7\x84
इस एनाकोंडा निर्देशिका के लिए (शुरुआती भाग आपकी मशीन पर थोड़ा अलग हो सकता है):
F:\Program Files\Anaconda2\Lib\site-packages
इस चरण को करने के बाद अब हम पायथन कोड में आयात cv2 का उपयोग करने में सक्षम होंगे। लेकिन, हमें अभी भी FFMPEG (वीडियो कोडेक) को काम करने के लिए थोड़ा और काम करने की जरूरत है (हमें वीडियो संसाधित करने जैसी चीजों को करने में सक्षम बनाने के लिए।)
"मेरा कंप्यूटर" (या विंडोज 8.1 पर "यह पीसी") पर राइट-क्लिक करें -> गुणों पर बायाँ-क्लिक करें -> "उन्नत" टैब पर बायाँ-क्लिक करें -> "पर्यावरण चर …" बटन पर बायाँ-क्लिक करें। एक नया उपयोगकर्ता चर जोड़ें ओपनसीवी को इंगित करने के लिए (या तो 32-बिट सिस्टम के लिए x86 या 64-बिट सिस्टम के लिए x64।) मैं वर्तमान में 64-बिट मशीन पर हूं।
32-बिटOPENCV_DIRC:\opencv\बिल्ड\x86\vc12
64-बिटOPENCV_DIRC:\opencv\बिल्ड\x64\vc12
%OPENCV_DIR%\bin को उपयोगकर्ता चर पथ में जोड़ें।
उदाहरण के लिए, मेरा पथ उपयोगकर्ता चर इस तरह दिखता है …
पहले:
एफ: / उपयोगकर्ता / जॉनी / एनाकोंडा; सी: / उपयोगकर्ता / जॉनी / एनाकोंडा / स्क्रिप्ट
बाद में:
एफ: / उपयोगकर्ता / जॉनी / एनाकोंडा; सी: / उपयोगकर्ता / जॉनी / एनाकोंडा / स्क्रिप्ट;% OPENCV_DIR% / बिन
यह हम कर रहे हैं! FFMPEG उपयोग के लिए तैयार है!
चरण 4: पुष्टि करने के लिए परीक्षण करें
हमें यह परीक्षण करने की आवश्यकता है कि क्या अब हम एनाकोंडा (स्पाइडर आईडीई के माध्यम से) में ऐसा कर सकते हैं:
- ओपनसीवी पैकेज आयात करें
- FFMPEG उपयोगिता का उपयोग करें (वीडियो पढ़ने/लिखने/प्रोसेस करने के लिए)
टेस्ट 1: क्या हम ओपनसीवी आयात कर सकते हैं?
यह पुष्टि करने के लिए कि एनाकोंडा अब OpenCV-Python पैकेज (अर्थात् cv2) आयात करने में सक्षम है, इन्हें IPython कंसोल में जारी करें:
आयात cv2
प्रिंट cv2._संस्करण_
यदि पैकेज cv2 को बिना किसी त्रुटि के आयात किया गया है, और cv2 संस्करण का प्रिंट आउट लिया गया है, तो हम सभी अच्छे हैं!
टेस्ट 2: क्या हम FFMPEG कोडेक का उपयोग कर सकते हैं?
एक नमूना रखें
इनपुट_वीडियो.mp4
निर्देशिका में वीडियो फ़ाइल। हम परीक्षण करना चाहते हैं कि क्या हम कर सकते हैं:
- इस.mp4 वीडियो फ़ाइल को पढ़ें, और
- एक नई वीडियो फ़ाइल लिखें (.avi या.mp4 आदि हो सकती हैं)
ऐसा करने के लिए हमारे पास एक परीक्षण पायथन कोड होना चाहिए, इसे test.py कहते हैं। इसे उसी निर्देशिका में रखें जिसमें नमूना है
इनपुट_वीडियो.mp4
फ़ाइल।
यह क्या है
test.py
ऐसा लग सकता है (नोट: टिप्पणी क्षेत्र में पीट और वारेन के सुझावों के लिए बहुत धन्यवाद - मैंने अपना मूल परीक्षण कोड उसके साथ बदल दिया है - कृपया इसे स्वयं जांचें और हमें बताएं कि क्या यह बेहतर काम करता है):
आयात cv2
cap = cv2. VideoCapture("input_video.mp4") प्रिंट cap.isOpened() # True = सफलतापूर्वक वीडियो पढ़ें। असत्य - वीडियो पढ़ने में विफल। fourcc = cv2. VideoWriter_fourcc(*'XVID') out = cv2. VideoWriter("output_video.avi", fourcc, 20.0, (640, 360)) प्रिंट आउट। isOpened () # True = सफलतापूर्वक वीडियो लिखें। गलत - वीडियो लिखने में विफल। कैप.रिलीज़ () आउट.रिलीज़ ()
यह परीक्षा बहुत ही महत्वपूर्ण है। यदि आप वीडियो फ़ाइलों को संसाधित करना चाहते हैं, तो आपको यह सुनिश्चित करना होगा कि एनाकोंडा / स्पाइडर आईडीई FFMPEG (वीडियो कोडेक) का उपयोग कर सकता है। इसे काम करने में मुझे कई दिन लग गए। लेकिन मुझे आशा है कि इसमें आपको बहुत कम समय लगेगा!:) नोट: एनाकोंडा स्पाइडर आईडीई का उपयोग करते समय एक और बहुत महत्वपूर्ण टिप। सुनिश्चित करें कि आप वर्तमान कार्य निर्देशिका (सीडब्ल्यूडी) की जाँच करें !!!
चरण 5: फेस डिटेक्शन के लिए कोड बनाएं
लक्ष्य
इस सत्र में,
- हम Haar फ़ीचर-आधारित Cascade Classifiers का उपयोग करके चेहरे की पहचान की मूल बातें देखेंगे
- हम आंखों का पता लगाने आदि के लिए इसे बढ़ाएंगे
ओपनसीवी में हार-कैस्केड डिटेक्शन
यहां हम डिटेक्शन से निपटेंगे। ओपनसीवी में पहले से ही चेहरे, आंखों, मुस्कान आदि के लिए कई पूर्व-प्रशिक्षित क्लासिफायर हैं। उन एक्सएमएल फाइलों को ओपनसीवी/डेटा/हार्कस्केड/फोल्डर में संग्रहीत किया जाता है। आइए OpenCV के साथ फेस और आई डिटेक्टर बनाएं। सबसे पहले हमें आवश्यक XML क्लासिफायर को लोड करना होगा। फिर हमारी इनपुट छवि (या वीडियो) को ग्रेस्केल मोड में लोड करें या हम कैमरे का उपयोग कर सकते हैं (रियल टाइम फेस डिटेक्शन के लिए)
np. के रूप में numpy आयात करें
आयात 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/data/haarcascades.xml') cap = cv2. VideoCapture(0) जबकि 1: ret, img = cap.read() धूसर = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) चेहरे = face_cascade.detectMultiScale(ग्रे, 1.5, 5) के लिए (x, y, w, h) चेहरों में: cv2.rectangle(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] आंखें = eye_cascade.detectMultiScale(roi_gray) आंखों में (उदा, ey, ew, eh) के लिए: cv2.rectangle(roi_color, (उदा, ey), (ex+ew, ey+eh), (0, 255, 0), 2) प्रिंट "मिला" +str(len(faces)) +" face(s)" cv2.imshow ('img', img) k = cv2.waitKey(30) और 0xff अगर k == 27: ब्रेक कैप.रिलीज () cv2.destroyAllWindows ()
चरण 6: डेटा सेट बनाने के लिए कोड बनाएं
हम चेहरे की पहचान कर रहे हैं, इसलिए आपको कुछ चेहरे की छवियों की आवश्यकता होगी! आप या तो अपना खुद का डेटासेट बना सकते हैं या उपलब्ध फेस डेटाबेस में से किसी एक के साथ शुरू कर सकते हैं, https://face-rec.org/databases/ आपको एक अप-टू-डेट ओवरव्यू देता है। तीन दिलचस्प डेटाबेस हैं (विवरण के कुछ हिस्सों को https://face-rec.org से उद्धृत किया गया है):
- एटी एंड टी फेसडेटाबेस
- येल फेसडेटाबेस ए
- विस्तारित येल फेसडेटाबेस बी
यहाँ मैं अपने स्वयं के डेटासेट का उपयोग कर रहा हूँ…। कोड की मदद से जो नीचे दिया गया है:
np. के रूप में numpy आयात करें
आयात 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 दर्ज करें') sampleN=0; जबकि 1: ret, img = cap.read() धूसर = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) चेहरे = face_cascade.detectMultiScale (ग्रे, 1.3, 5) (x, y, w, h) चेहरों में: नमूनाN = नमूनाएन+1; cv2.imwrite("F:/Program Files/projects/face_rec/facesData/User।"+str(id)+ "।" +str(sampleN)+ ".jpg", ग्रे [y:y+h, x: x+w]) cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2) cv2.waitKey(100) cv2.imshow('img', img) cv2.waitKey(1) अगर sampleN > 20: ब्रेक कैप.रिलीज () cv2.destroyAllWindows()
चरण 7: पहचानकर्ता को प्रशिक्षित करने के लिए कोड बनाएं
प्रशिक्षण सेट तैयार करने के लिए फ़ंक्शन बनाएं
अब, हम एक फंक्शन परिभाषित करेंगे
getImagesWithID (पथ)
जो इनपुट तर्क के रूप में छवि डेटाबेस के लिए पूर्ण पथ लेता है और 2 सूची का टपल देता है, एक में पहचाने गए चेहरे होते हैं और दूसरे में उस चेहरे के लिए संबंधित लेबल होता है। उदाहरण के लिए, यदि चेहरों की सूची में ith सूचकांक डेटाबेस में 5 वें व्यक्ति का प्रतिनिधित्व करता है, तो लेबल की सूची में संबंधित ith स्थान का मान 5 के बराबर होता है।
अब नीचे दिए गए कोड की सहायता से डेटासेट चेहरों (जो चरण 6 में बनाया गया है) को.yml फ़ाइल में बदलें:
आयात ओएस
पीआईएल आयात से एनपी आयात cv2 के रूप में numpy आयात करें छवि # चेहरा पहचान के लिए हम LBPH चेहरा पहचानकर्ता पहचानकर्ता = cv2.createLBPHFaceRecognizer(); पथ = "एफ:/प्रोग्राम फाइल्स/प्रोजेक्ट्स/फेस_रेक/फेसडेटा" डीईएफ़ getImagesWithID (पथ): इमेजपाथ = [os.path.join (पथ, f) f के लिए os.listdir (पथ) में] # प्रिंट इमेज_पाथ #getImagesWithID(पथ) चेहरे = आईडी = छवि के लिए छविपथ में पथ: # छवि पढ़ें और ग्रेस्केल चेहरों में कनवर्ट करेंImg = Image.open(imagePath).convert('L') faceNP = np.array(facesImg, 'uint8') # छवि आईडी का लेबल प्राप्त करें = int(os.path.split(imagePath)[-1].split(.")[1]) # छवि चेहरों में चेहरे का पता लगाएं। संलग्न करें (फेसएनपी) आईडी संलग्न करें। (आईडी) cv2.imshow("ट्रेनिंग के लिए चेहरे जोड़ना", faceNP) cv2.waitKey(10) रिटर्न np.array(IDs), फेस आईडी, फेस = getImagesWithID (पथ) पहचानकर्ता। ट्रेन (चेहरे, आईडी) पहचानकर्ता। सहेजें ("एफ:/प्रोग्राम फाइल्स/प्रोजेक्ट्स/face_rec/faceREC/trainingdata.yml") cv2.destroyAllWindows ()
इस कोड का उपयोग करके सभी फेस डेटासेट को एक.yml फ़ाइल में परिवर्तित किया जाता है…..पथ स्थान है ("F:/Program Files/projects/face_rec/faceREC/trainingdata.yml")
चरण 8: चेहरे और परिणाम को पहचानने के लिए कोड बनाएं
Guyzz यह अंतिम चरण है जिसमें हम आपके वेबकैम की मदद से चेहरों को पहचानने के लिए कोड बना सकते हैं। 1. कैम से वीडियो कैप्चर करना 2. इसकी तुलना अपनी.yml फ़ाइल से करें
npimport cv2 face_cascade = cv2. CascadeClassifier('F:/Program Files/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml') cap = cv2. VideoCapture(0) rec = cv2.createLBHFaceRecognizer(); 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() धूसर = cv2.cvtColor (img, cv2. COLOR_BGR2GRAY) चेहरे = face_cascade.detectMultiScale (ग्रे, 1.5, 5) (x, y, w, h) चेहरों के लिए: cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2) आईडी, conf=rec.predict(gray[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: आईडी='राहुल' अगर आईडी==6: id="अक्षय" cv2.cv. PutText(cv2.cv.fromarray(img), str(id), (x, y+h), फ़ॉन्ट, 255) cv2.imshow('img', img) अगर cv2.waitKey(1) == ord('q'): ब्रेक कैप.रिलीज ()
cv2.destroyAllWindows ()
और अंत में परिणाम आपकी आंखों के सामने आ जाएगा …… आप लिंक के नीचे से ज़िप फ़ाइल भी डाउनलोड कर सकते हैं: कोड डाउनलोड करने के लिए यहां क्लिक करें, इसलिए, इस निर्देश में हमने OpenCV का उपयोग करके चेहरे की पहचान + पहचान का कार्य किया…..यदि आप इस निर्देश को पसंद करें….. कृपया मुझे सब्सक्राइब करें और मुझे वोट दें …..धन्यवाद दोस्तों:)
सिफारिश की:
गुप्त डिब्बे के साथ चेहरे की पहचान दर्पण: 15 कदम (चित्रों के साथ)
सीक्रेट कम्पार्टमेंट के साथ फेशियल रिकॉग्निशन मिरर: कहानियों, फिल्मों और इसी तरह के इस्तेमाल में आने वाले कभी-कभी रचनात्मक गुप्त डिब्बों से मुझे हमेशा से दिलचस्पी रही है। इसलिए, जब मैंने सीक्रेट कम्पार्टमेंट प्रतियोगिता देखी तो मैंने खुद इस विचार के साथ प्रयोग करने और एक साधारण दिखने वाला दर्पण बनाने का फैसला किया जो एक
MATLAB आसान चेहरा पहचान: 4 कदम
MATLAB ईज़ी फेस डिटेक्शन: इस इंस्ट्रक्शंस का मुख्य उद्देश्य यह दिखाना है कि इमेज प्रोसेसिंग कितनी आसान होगी, MATLABFace डिटेक्शन और ट्रैकिंग की मदद से एक महत्वपूर्ण और सक्रिय शोध क्षेत्र रहा है, इसलिए मैं समझाने जा रहा हूँ इसे बुद्धि से कैसे किया जा सकता है
चेहरा पहचान और पहचान - ओपनसीवी पायथन और अरुडिनो का उपयोग करके Arduino फेस आईडी .: 6 कदम
चेहरा पहचान और पहचान | ओपनसीवी पायथन और अरुडिनो का उपयोग करते हुए Arduino फेस आईडी: चेहरे की पहचान AKA फेस आईडी आजकल मोबाइल फोन पर सबसे महत्वपूर्ण विशेषताओं में से एक है। तो, मेरा एक प्रश्न था "क्या मेरे पास अपने Arduino प्रोजेक्ट के लिए एक फेस आईडी हो सकता है" और इसका उत्तर हां है… मेरी यात्रा इस प्रकार शुरू हुई: चरण 1: हम तक पहुंच
ओपनसीवी चेहरा पहचान: 4 कदम
ओपनसीवी फेस रिकग्निशन: स्मार्ट फोन, कई इलेक्ट्रॉनिक गैजेट्स जैसे कई अनुप्रयोगों में आजकल फेस रिकग्निशन काफी आम बात है। इस तरह की तकनीक में बहुत सारे एल्गोरिदम और टूल्स इत्यादि शामिल होते हैं .. रास्पबेरी जैसे कुछ एम्बेडेड एम्बेडेड एसओसी प्लेटफॉर्म का उपयोग करता है
रास्पबेरी पाई के साथ एक रेफ्रिजरेटर के लिए चेहरे की पहचान सुरक्षा प्रणाली: 7 कदम (चित्रों के साथ)
रास्पबेरी पाई के साथ एक रेफ्रिजरेटर के लिए चेहरे की पहचान सुरक्षा प्रणाली: इंटरनेट ब्राउज़िंग मैंने पाया है कि सुरक्षा प्रणालियों की कीमतें 150 डॉलर से 600 डॉलर और उससे अधिक तक भिन्न होती हैं, लेकिन सभी समाधान (यहां तक कि बहुत महंगे वाले) को अन्य के साथ एकीकृत नहीं किया जा सकता है आपके घर पर स्मार्ट उपकरण! उदाहरण के लिए, आप सेट नहीं कर सकते