Мазмуну:

Opencv Бетти аныктоо, окутуу жана таануу: 3 кадам
Opencv Бетти аныктоо, окутуу жана таануу: 3 кадам

Video: Opencv Бетти аныктоо, окутуу жана таануу: 3 кадам

Video: Opencv Бетти аныктоо, окутуу жана таануу: 3 кадам
Video: Урок №2. Установка, сбор датасета, тренировка модели для распознавания лиц. Beyond Robotics 2024, Ноябрь
Anonim
Opencv Бетти аныктоо, окутуу жана таануу
Opencv Бетти аныктоо, окутуу жана таануу

OpenCV-булагы ачык булактан турган компьютердин көрүү китепканасы, бул сүрөттү иштетүү сыяктуу негизги сүрөттөрдү иштетүү тапшырмаларын аткаруу үчүн абдан популярдуу, сүрөттү аралаштыруу, ошондой эле видеонун сапатын жогорулатуу, босого ж. Б. моделдер, алар жөнөкөй милдеттерди чечүү үчүн түздөн -түз колдонулушу мүмкүн.

opencv орнотуу үчүн бул шилтемени колдонуңуз

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

1 -кадам: Реалдуу убакыт режиминде жүздү аныктоо

жүздү аныктоо боюнча көптөгөн программаларды гуглдан издесеңиз болот жана аныкталган жүздөр тренинг жана этикетка сыяктуу сүрөттөрдү кайра иштетүү үчүн папкада сакталышы керек. биз 30 үлгүлөрдү чогултканы жатабыз

cv2 импорттоо

np катары numpy импорттоо

импорт системасын импорттоо

камера = cv2. VideoCapture (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #сиздин harcascade файл жолун кошуу

name = raw_input ("Анын аты ким?")

#бардык файлдар Users/prasad/Documents/images папкасында сакталат

dirName = "/Users/prasad/Documents/images/" + name

print (dirName) эгер болбосо os.path.exists (dirName): os.makedirs (dirName) басып чыгаруу ("Каталог түзүлдү") башка: print ("Аты мурунтан эле бар") sys.exit ()

саноо = 1

#биз 30 үлгү чогултканы жатабыз

30 саны боюнча: break # frame = frame.array grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) жүздөр = faceCascade.detectMultiScale (боз, 1.5, 5) үчүн (x, y, w, h): roiGray = боз [y: y + h, x: x + w] fileName = dirName + "/" + name + str (count) + ".jpg" cv2.imwrite (fileName, roiGray) cv2.imshow ("жүз", roiGray) cv2.rectangle (кадр, (x, y), (x+w, y+h), (0, 255, 0), 2) count+= 1 cv2.imshow ('frame', frame) key = cv2.waitKey (1)

эгер ачкыч == 27:

тыныгуу

#camera.release ()

cv2.destroyAllWindows ()

2 -кадам: Үлгүлүү сүрөттөрүңүздү окутуу

Жүздү аныктоо аяктагандан кийин, биз сүрөттөрдү үйрөтө алабыз

импорттоо osimport numpy катары PIL импорттоо Image импорт cv2 импорт туздалган #импорт сериялуу

#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 (_ file_))

#сүрөттөрдү сүрөттөр папкасынын астына үйрөтүңүз

imageDir = os.path.join (baseDir, "сүрөттөр")

currentId = 1

labelIds = {} yLabels = xTrain = #ser.write ("Окутуу…..". encode ())

os.walk ичиндеги root, dirs, файлдар үчүн (imageDir):

файлдагы файл үчүн print (root, dirs, files): print (file) if file.endswith ("png") or file.endswith ("jpg"): path = os.path.join (root, file) label = os.path.basename (тамыры) басып чыгаруу (энбелги)

labelIdsке жазбаса:

labelIds [label] = currentId print (labelIds) currentId += 1

id_ = labelIds [label]

pilImage = Image.open (path).convert ("L") imageArray = np.array (pilImage, "uint8") жүздөр = 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_)

ачык ("этикеткалар", "wb") менен f катары:

pickle.dump (labelIds, f) f.close ()

таануучу.поезд (xTrain, np.array (yLabels))

ognizer.save ("trainer.yml") басып чыгаруу (labelIds)

3 -кадам: жүздөрдү таануу

тренинг аяктагандан кийин, сиз төмөнкү кодду иштете аласыз, ал сиздин үйрөтүлгөн жүзүңүздү тааный баштайт

импорт osos.environ ['PYTHONINSPECT'] = 'күйгүзүү' cv2 импорт numpy катары np импорт тузу #импорт RPi. GPIO GPIO катары импорттук убакыт уйкудан

f катары ачык ('этикеткалар', 'rb') менен:

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

камера = cv2. VideoCapture (0)

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

таануучу = cv2.face. LBPHFaceRecognizer_create () таануучу.окуу ("trainer.yml")

шрифт = cv2. FONT_HERSHEY_SIMPLEX

акыркы = ''

#камерадагы кадр үчүн.capture_continuous (rawCapture, format = "bgr", use_video_port = True):

while True: ret, frame = camera.read () grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) жүздөр = faceCascade.detectMultiScale (боз, масштабFactor = 1.5, minNeighbors = 5) үчүн (x, y, w, h) жүздөрдө: roiGray = боз [y: y+h, x: x+w]

id_, conf = таануучу.президент (roiGray)

аты үчүн, dicti.items () мааниси:

if value == id_: print (name) cv2.putText (frame, name, (x, y), font, 2, (0, 0, 255), 2, cv2. LINE_AA) if name! = last: last = ат болсо конф <= 70: cv2.rectangle (кадр, (x, y), (x+w, y+h), (0, 255, 0), 2)

cv2.imshow ('кадр', кадр)

ачкыч = cv2.waitKey (1)

эгер ачкыч == 27:

cv2.destroyAllWindows бузуу ()

Сунушталууда: