विषयसूची:

ओपनसीवी फेस डिटेक्शन, ट्रेनिंग एंड रिकग्निशन: 3 स्टेप्स
ओपनसीवी फेस डिटेक्शन, ट्रेनिंग एंड रिकग्निशन: 3 स्टेप्स

वीडियो: ओपनसीवी फेस डिटेक्शन, ट्रेनिंग एंड रिकग्निशन: 3 स्टेप्स

वीडियो: ओपनसीवी फेस डिटेक्शन, ट्रेनिंग एंड रिकग्निशन: 3 स्टेप्स
वीडियो: Face Recognition using Python and OpenCV (HINDI)⚡ | Part 3 | Face Detection and Recognition ⚡ 2024, जुलाई
Anonim
ओपनसीवी फेस डिटेक्शन, ट्रेनिंग एंड रिकग्निशन
ओपनसीवी फेस डिटेक्शन, ट्रेनिंग एंड रिकग्निशन

ओपनसीवी एक ओपन सोर्स कंप्यूटर विज़न लाइब्रेरी है जो बुनियादी छवि प्रसंस्करण कार्यों जैसे धुंधलापन, छवि सम्मिश्रण, छवि को बढ़ाने के साथ-साथ वीडियो की गुणवत्ता, थ्रेशोल्डिंग आदि करने के लिए बहुत लोकप्रिय है। छवि प्रसंस्करण के अलावा, यह विभिन्न पूर्व-प्रशिक्षित गहन शिक्षण प्रदान करता है। मॉडल जो सीधे हाथ में सरल कार्यों को हल करने के लिए उपयोग किए जा सकते हैं।

ओपनसीवी इंस्टॉलेशन के लिए इस लिंक का उपयोग करें

www.instructables.com/id/Opencv-and-Python…

चरण 1: रीयल टाइम वीडियो में चेहरे का पता लगाना

आप कई फेस डिटेक्शन प्रोग्राम के लिए Google पर खोज कर सकते हैं और पहचाने गए चेहरों को आगे की इमेज प्रोसेसिंग चीजों जैसे ट्रेनिंग और लेबलिंग के लिए एक फोल्डर में सेव किया जाना चाहिए। हम 30 नमूने एकत्र करने जा रहे हैं

आयात cv2

np. के रूप में numpy आयात करें

आयात ओएस आयात sys

कैमरा = cv2.वीडियो कैप्चर (0)

faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml") # अपना harcascade फ़ाइल पथ जोड़ें

नाम = कच्चा_इनपुट ("उसका नाम क्या है?")

#सभी फ़ाइलें उपयोगकर्ता/प्रसाद/दस्तावेज़/छवि फ़ोल्डर के अंतर्गत सहेजी जाएंगी

dirName = "/ उपयोगकर्ता/प्रसाद/दस्तावेज़/छवियां/" + नाम

प्रिंट (dirName) यदि नहीं os.path.exists (dirName): os.makedirs (dirName) प्रिंट ("निर्देशिका बनाई गई") अन्य: प्रिंट ("नाम पहले से मौजूद है") sys.exit ()

गिनती = 1

#हम 30 सैंपल लेने जा रहे हैं

जबकि गिनती 30: ब्रेक # फ्रेम = फ्रेम। सरणी ग्रे = cv2.cvtColor (फ्रेम, cv2. COLOR_BGR2GRAY) चेहरे = faceCascade.detectMultiScale (ग्रे, 1.5, 5) (x, y, w, h) चेहरों में: roiGray = ग्रे [y:y+h, x:x+w] फ़ाइल का नाम = dirName + "/" + नाम + str(गिनती) + ".jpg" cv2.imwrite(fileName, roiGray) cv2.imshow("face", roiGray) cv2.rectangle(फ्रेम, (x, y), (x+w, y+h), (0, 255, 0), 2) काउंट += 1 cv2.imshow('frame', फ्रेम) key = cv2.वेटकी(1)

अगर कुंजी == 27:

टूटना

#कैमरा.रिलीज़ ()

cv2.destroyAllWindows ()

चरण 2: अपनी नमूना छवियों का प्रशिक्षण

फेस डिटेक्शन पूरा होने के बाद हम छवियों के प्रशिक्षण के लिए जा सकते हैं

पीआईएल आयात से एनपी के रूप में osimport numpy आयात करें छवि आयात cv2 आयात अचार # आयात सीरियल

#ser = सीरियल। सीरियल ('/ dev/ttyACM0', 9600, टाइमआउट = 1)

faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml")

पहचानकर्ता = cv2.face. LBHFaceRecognizer_create ()

बेसडिर = os.path.dirname(os.path.abspath(_file_))

#इमेज फोल्डर के तहत इमेज को ट्रेन करें

imageDir = os.path.join(baseDir, "images")

वर्तमान आईडी = 1

लेबलआईड्स = {} yLabels = xTrain = #ser.write("प्रशिक्षण…..".एन्कोड ())

os.walk (imageDir) में रूट, डीआईआर, फाइलों के लिए:

फाइलों में फाइल के लिए प्रिंट (रूट, डीआईआर, फाइल): प्रिंट (फाइल) अगर फाइल.एंड्सविथ ("पीएनजी") या फाइल.एंड्सविथ ("जेपीजी"): पथ = ओएस.पथ। जॉइन (रूट, फाइल) लेबल = os.path.basename(root) प्रिंट (लेबल)

यदि लेबल आईडी में लेबल नहीं है:

लेबल आईडी [लेबल] = वर्तमान आईडी प्रिंट (लेबल आईडी) वर्तमान आईडी + = 1

आईडी_ = लेबल आईडी [लेबल]

pilImage = Image.open(path).convert("L") imageArray = np.array(pilImage, "uint8") face = faceCascade.detectMultiScale(imageArray, scaleFactor=1.1, minNeighbors=5)

फलकों में (x, y, w, h) के लिए:

roi = imageArray[y:y+h, x:x+w] xTrain.append(roi) yLabels.append(id_)

f के रूप में खुले ("लेबल", "wb") के साथ:

अचार। डंप (लेबल आईडी, एफ) एफ। बंद करें ()

पहचानकर्ता.ट्रेन (xTrain, np.array(yLabels))

पहचानकर्ता.सेव ("ट्रेनर.वाईएमएल") प्रिंट (लेबल आईडी)

चरण 3: चेहरों को पहचानना

प्रशिक्षण समाप्त होने के बाद अब आप नीचे दिए गए कोड को चला सकते हैं ताकि यह आपके प्रशिक्षित चेहरों को पहचानना शुरू कर दे

आयात osos.environ['PYTHONINSPECT'] = 'चालू' आयात cv2 np आयात अचार के रूप में आयात numpy #import RPi. GPIO समय से GPIO आयात नींद से

f के रूप में खुले ('लेबल', 'आरबी') के साथ:

dicti = अचार। लोड (एफ) एफ। बंद करें ()

कैमरा = cv2.वीडियो कैप्चर (0)

faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml")

पहचानकर्ता = cv2.face। LBPHFaceRecognizer_create ()

फ़ॉन्ट = cv2. FONT_HERSHEY_SIMPLEX

अंतिम = ''

# कैमरे में फ़्रेम के लिए

जबकि ट्रू: रिट, फ्रेम = कैमरा। रीड () ग्रे = cv2.cvtColor (फ्रेम, cv2. COLOR_BGR2GRAY) चेहरे = faceCascade.detectMultiScale (ग्रे, स्केलफैक्टर = 1.5, minNeighbors = 5) के लिए (x, y, w, h) चेहरों में: roiGray = धूसर[y:y+h, x:x+w]

id_, conf = पहचानकर्ता। भविष्यवाणी (roiGray)

नाम के लिए, dicti.items में मान ():

यदि मान == id_: प्रिंट (नाम) cv2.putText (फ्रेम, नाम, (x, y), फ़ॉन्ट, 2, (0, 0, 255), 2, cv2. LINE_AA) यदि नाम! = अंतिम: अंतिम = नाम अगर conf <= 70: cv2.rectangle(फ्रेम, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow ('फ्रेम', फ्रेम)

कुंजी = cv2.waitKey(1)

अगर कुंजी == 27:

cv2.destroyAllWindows को तोड़ें ()

सिफारिश की: