Мазмұны:

Opencv Бетті анықтау, оқыту және тану: 3 қадам
Opencv Бетті анықтау, оқыту және тану: 3 қадам

Бейне: Opencv Бетті анықтау, оқыту және тану: 3 қадам

Бейне: Opencv Бетті анықтау, оқыту және тану: 3 қадам
Бейне: Урок №1. Что такое ГНГ? Почему именно эта технология для создания распознавания лиц? Beyond Robotics 2024, Шілде
Anonim
Opencv Бетті анықтау, оқыту және тану
Opencv Бетті анықтау, оқыту және тану

OpenCV-бұл көзі ашық компьютерлік көру кітапханасы, ол бұлыңғырлау, кескінді араластыру, суретті жақсарту, сонымен қатар бейне сапасын жоғарылату, суретті өңдеу сияқты негізгі тапсырмаларды орындауға өте танымал. Суретті өңдеуден басқа, ол алдын ала дайындалған әр түрлі терең оқытуды қамтамасыз етеді. қарапайым тапсырмаларды шешу үшін тікелей қолдануға болатын модельдер.

opencv орнату үшін осы сілтемені пайдаланыңыз

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

1 -қадам: Бейнені нақты уақытта анықтау

сіз google -ден бетті анықтаудың көптеген бағдарламаларын іздей аласыз, ал анықталған беттер жаттығулар мен таңбалау сияқты кескіндерді өңдеу үшін қалтада сақталуы керек. біз 30 үлгіні жинаймыз

cv2 импорттау

numpy санын np ретінде импорттаңыз

импорттық жүйені импорттау

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

faceCascade = cv2. CascadeClassifier («haarcascade_frontalface_default.xml») #файлдың жолын қосыңыз

name = raw_input («Оның аты кім?»)

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

dirName = «/Users/prasad/Documents/images/» + name

print (dirName) болмаса, os.path.exists (dirName): os.makedirs (dirName) басып шығару («Каталог жасалды») басқа: басып шығару («Атау бұрыннан бар») sys.exit ()

санау = 1

#біз 30 үлгіні жинаймыз

30 саны кезінде: break # frame = frame.array grey = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) face = 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 ('кадр', кадр) key = cv2.waitKey (1)

егер кілт == 27:

үзіліс

#camera.release ()

cv2.destroyAllWindows ()

2 -қадам: Үлгі суреттеріңізді үйрету

Бетті анықтау аяқталғаннан кейін суреттерді үйретуге баруға болады

osimport numpy -ді PIL импортынан np ретінде импорттау 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 (_ файл_))

#суреттер қалтасы астындағы суреттерді жаттықтырыңыз

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 басып шығару (labelIds) currentId += 1

id_ = labelIds [label]

pilImage = Image.open (жол).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_)

f сияқты ашық («жапсырмалар», «wb»):

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

танушы.транспорт (xTrain, np.array (yLabels))

tanınуші.save («trainer.yml») басып шығару (labelIds)

3 -қадам: Беттерді тану

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

импорт osos.environ ['PYTHONINSPECT'] = 'қосулы' импорт cv2 np импорттау тұздығы ретінде импорттау #импорт RPi. GPIO GPIO ретінде импорттық ұйқыдан.

f (ашық), 'rb')

dicti = тұздалған.жүктеме (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) беттерде: 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 = conf <= 70 болса атау: cv2.тіктөртбұрыш (кадр, (x, y), (x+w, y+h), (0, 255, 0), 2)

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

key = cv2.waitKey (1)

егер кілт == 27:

үзіліс cv2.destroyAllWindows ()

Ұсынылған: