ዝርዝር ሁኔታ:

Opencv የፊት ለይቶ ማወቅ ፣ ስልጠና እና ዕውቅና 3 ደረጃዎች
Opencv የፊት ለይቶ ማወቅ ፣ ስልጠና እና ዕውቅና 3 ደረጃዎች

ቪዲዮ: Opencv የፊት ለይቶ ማወቅ ፣ ስልጠና እና ዕውቅና 3 ደረጃዎች

ቪዲዮ: Opencv የፊት ለይቶ ማወቅ ፣ ስልጠና እና ዕውቅና 3 ደረጃዎች
ቪዲዮ: የፊት ጭምብል መልበስና አለመልበስን ለይቶ ማወቅ/Corona-Face-Mask-Detection Python Using Machine Learning in Amharic 2024, ህዳር
Anonim
Opencv የፊት ለይቶ ማወቅ ፣ ስልጠና እና እውቅና
Opencv የፊት ለይቶ ማወቅ ፣ ስልጠና እና እውቅና

OpenCV እንደ የመደብዘዝ ፣ የምስል ማደባለቅ ፣ ምስልን እንዲሁም የቪዲዮ ጥራትን ፣ ደፈናን ወዘተ የመሳሰሉትን መሰረታዊ የምስል ማቀናበሪያ ተግባሮችን በማከናወን በጣም የተወደደ ክፍት ምንጭ የኮምፒተር ራዕይ ቤተ-መጽሐፍት ነው ከምስል ማቀናበር በተጨማሪ የተለያዩ ቅድመ-ሥልጠና ጥልቅ ትምህርትን ይሰጣል። በእጅ ያሉ ቀላል ተግባሮችን ለመፍታት በቀጥታ ጥቅም ላይ ሊውሉ የሚችሉ ሞዴሎች።

ለ opencv ጭነት ይህንን አገናኝ ይጠቀሙ

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

ደረጃ 1 - በእውነተኛ ሰዓት ቪዲዮ ውስጥ ፊትን መለየት

ለብዙ የፊት ማወቂያ ፕሮግራሞች google ን መፈለግ ይችላሉ እና የተገኙት ፊቶች እንደ ሥልጠና እና መሰየምን የመሳሰሉ ለተጨማሪ የምስል ማቀናበሪያ ነገሮች በአቃፊ ውስጥ መቀመጥ አለባቸው። እኛ 30 ናሙናዎችን እንሰበስባለን

ማስመጣት cv2

ቁጥርን እንደ np ያስመጡ

ማስመጣት os ማስመጣት sys

ካሜራ = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #የእርስዎ harcascade ፋይል መንገድ ያክሉ

name = raw_input ("የእሱ/የእሷ ስም ማን ነው?")

#ሁሉም ፋይሎች በተጠቃሚዎች/ፕራሳድ/ሰነዶች/ምስሎች አቃፊ ስር ይቀመጣሉ

dirName = "/ተጠቃሚዎች/ፕራስሳድ/ሰነዶች/ምስሎች/" + ስም

ካልሆነ።

ቁጥር = 1

#30 ናሙናዎችን እንሰበስባለን

30 በሚቆጠርበት ጊዜ # ክፈፍ # ፍሬም = ፍሬም። ግራጫ [y: y + h ፣ x: x + w] fileName = dirName + "/" + name + str (count) + ".jpg" cv2.imwrite (fileName, roiGray) cv2.imshow ("ፊት" ፣ roiGray)) cv2.አራት ማዕዘን (ክፈፍ ፣ (x ፣ y) ፣ (x+w ፣ y+h) ፣ (0 ፣ 255 ፣ 0) ፣ 2) ቆጠራ+= 1 cv2. የምስል ማሳያ (‹ፍሬም› ፣ ፍሬም) ቁልፍ = cv2.ጠባቂ (1)

ቁልፍ ከሆነ == 27:

ሰበር

#ካሜራ። መልቀቅ ()

cv2. DestroyAllWindow ()

ደረጃ 2 የናሙና ምስሎችዎን ማሰልጠን

የፊት ለይቶ ማወቅ ከተጠናቀቀ በኋላ ምስሎቹን ለማሠልጠን መሄድ እንችላለን

አስመጣ osimport numpy እንደ np ከ PIL ማስመጣት Image import cv2 import pickle #import serial

#ser = serial. Serial ('/dev/ttyACM0' ፣ 9600 ፣ የእረፍት ጊዜ = 1)

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

ማወቂያ = cv2.face. LBPHFaceRecognizer_create ()

baseDir = os.path.dirname (os.path.abspath (_ ፋይል_))

#በምስሎች አቃፊ ስር ምስሎቹን ያሠለጥኑ

imageDir = os.path.join (baseDir ፣ “ምስሎች”)

currentId = 1

labelIds = {} yLabels = xTrain = #ser.write ("ስልጠና…..". encode ())

ለ root ፣ dirs ፣ os.walk (imageDir) ውስጥ ያሉ ፋይሎች

በፋይሎች ውስጥ ለፋይሉ ያትሙ (ሥር ፣ ዳይርስ ፣ ፋይሎች) - ፋይል.endswith ("png") ወይም file.endswith ("jpg") ከሆነ: መንገድ = os.path.join (ሥር ፣ ፋይል) መለያ = os.path.basename (ሥር) ህትመት (መለያ)

በመለያ ውስጥ ካልተሰየመ

labelIds [መሰየሚያ] = የአሁኑን ህትመት (መሰየሚያ) የአሁኑን ኢድ += 1

id_ = labelIds [መለያ]

pilImage = Image.open (ዱካ)።

ለ (x ፣ y ፣ w ፣ h) በፊቶች

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

በክፍት ("መለያዎች" ፣ "wb") እንደ f:

pickle.dump (labelIds ፣ ረ) f.close ()

recognizer.train (xTrain ፣ np.array (yLabels))

recognizer.save ("trainer.yml") ህትመት (labelIds)

ደረጃ 3 ፊቶችን ማወቅ

ሥልጠናው ካለቀ በኋላ የሰለጠኑ ፊቶችዎን ማወቅ እንዲጀምር ከዚህ በታች ያለውን ኮድ ማካሄድ ይችላሉ

ማስመጣት osos.environ ['PYTHONINSPECT'] = '' 'ላይ' cv2 ማስመጣት numpy እንደ np አስመጪ #አስመጪ RPi. GPIO እንደ ጂፒኦ ከጊዜ ወደ ጊዜ እንቅልፍ

በክፍት ('መለያዎች' ፣ 'rb') እንደ f:

dicti = pickle.load (f) f.close ()

ካሜራ = cv2. VideoCapture (0)

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

መታወቂያ = cv2.face. LBPHFaceRecognizer_create () recognizer.read ("trainer.yml")

ቅርጸ -ቁምፊ = cv2. FONT_HERSHEY_SIMPLEX

የመጨረሻው ="

#በካሜራ ውስጥ ለ ፍሬም

እውነት ሆኖ ሳለ - ret ፣ ፍሬም = ካሜራ። በፊቶች: roiGray = ግራጫ [y: y+h, x: x+w]

id_, conf = recognizer.predict (roiGray)

ለስም ፣ እሴት በ dicti.items ():

እሴት ከሆነ == id_: ህትመት (ስም) cv2.putText (ፍሬም ፣ ስም ፣ (x ፣ y) ፣ ቅርጸ -ቁምፊ ፣ 2 ፣ (0 ፣ 0 ፣ 255) ፣ 2 ፣ cv2. LINE_AA) ስም ከሆነ! = የመጨረሻ ፦ የመጨረሻ = ስም ከሆነ conf <= 70: cv2. አራት ማዕዘን (ፍሬም ፣ (x ፣ y) ፣ (x+w ፣ y+h) ፣ (0 ፣ 255 ፣ 0) ፣ 2)

cv2. ማሳያ ('ፍሬም' ፣ ፍሬም)

ቁልፍ = cv2.waitKey (1)

ቁልፍ ከሆነ == 27:

cv2. DestroyAllWindow ()

የሚመከር: