Orodha ya maudhui:

Kugundua Uso wa Opencv, Mafunzo na Utambuzi: Hatua 3
Kugundua Uso wa Opencv, Mafunzo na Utambuzi: Hatua 3

Video: Kugundua Uso wa Opencv, Mafunzo na Utambuzi: Hatua 3

Video: Kugundua Uso wa Opencv, Mafunzo na Utambuzi: Hatua 3
Video: Обучение Paddle OCR на пользовательском наборе данных | YOLOv7 + OCR на Google Colab 2023 2024, Novemba
Anonim
Kugundua Uso wa Opencv, Mafunzo na Utambuzi
Kugundua Uso wa Opencv, Mafunzo na Utambuzi

OpenCV ni maktaba ya maono ya kompyuta ya chanzo wazi ambayo ni maarufu sana kwa kufanya kazi za kimsingi za usindikaji wa picha kama vile kung'ara, uchanganyaji wa picha, kuongeza picha pamoja na ubora wa video, kuzuia nk. Mbali na usindikaji wa picha, hutoa mafunzo anuwai ya awali ya mafunzo ya kina mifano ambayo inaweza kutumika moja kwa moja kutatua kazi rahisi zilizo karibu.

kwa usanidi wa opencv tumia kiunga hiki

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

Hatua ya 1: Kugundua Uso katika Video ya Wakati Halisi

unaweza kutafuta google kwa programu nyingi za kugundua uso na nyuso zilizogunduliwa zinapaswa kuhifadhiwa kwenye folda kwa usindikaji wa picha zaidi kama mafunzo na uwekaji lebo. tunakwenda kukusanya sampuli 30

kuagiza cv2

kuagiza numpy kama np

kuagiza os kuagiza sys

kamera = cv2. Ukamataji wa Video (0)

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") # ongeza njia yako ya faili ya harcascade

name = raw_input ("Jina lake ni nani?")

# faili zote zitahifadhiwa chini ya folda ya Watumiaji / prasad / Nyaraka / picha

dirName = "/ Watumiaji / prasad / Nyaraka / picha /" + jina

chapa (dirName) ikiwa sivyo os.path.exists (dirName): os.makedirs (dirName) chapa ("Saraka Imeundwa") mwingine: chapisha ("Jina tayari lipo") sys.exit ()

hesabu = 1

#tutaenda kukusanya sampuli 30

wakati hesabu ya 30: kuvunja # fremu = fremu. rangi ya kijivu = cv2.cvtColor (fremu, cv2. COLOR_BGR2GRAY) nyuso = faceCascade.detectMultiScale (kijivu, 1.5, 5) kwa (x, y, w, h) katika nyuso: roiGray = kijivu [y: y + h, x: x + w] fileName = dirName + "/" + name + str (count) + ".jpg" cv2.imwrite (fileName, roiGray) cv2.imshow ("uso", roiGray cv2. mstatili (fremu, (x, y), (x + w, y + h), (0, 255, 0), 2) hesabu + = 1 cv2. onyesha ('fremu', fremu) ufunguo = cv2 Subiri (1)

ikiwa ufunguo == 27:

kuvunja

# kamera. tafadhali ()

cv2.destroyAll Windows ()

Hatua ya 2: Kufundisha Picha Zako za Mfano

Baada ya kugundua uso kukamilika basi tunaweza kwenda kufundisha picha

kuagiza osimport numpy kama np kutoka PIL kuagiza picha kuagiza cv2 kuagiza kachumbari #import serial

#ser = serial. Serial ('/ dev / ttyACM0', 9600, muda wa kumaliza = 1)

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

kitambuzi = cv2.face. LBPHFaceRecognizer_create ()

msingiDir = os.path.dirname (os.path.abspath (_ file_))

#funza picha chini ya folda ya picha

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

sasaId = 1

labelIds = {} yLabels = xTrain = # ser.write ("Mafunzo…..". encode ())

kwa mizizi, dirs, faili katika os.walk (imageDir):

chapa (mzizi, dirs, faili) kwa faili katika faili: chapisha (faili) ikiwa faili.endani na ("png") au file.enday ("jpg"): path = os.path.join (root, file) label = os.path.basename (mizizi) chapa (lebo)

ikiwa sio lebo katika studioIds:

studioIds [lebo] = sasaId kuchapisha (leboIds) sasaId + = 1

id_ = studioIds [lebo]

pilImage = Image. fungua (njia). kubadilisha ("L") imageArray = np.array (pilImage, "uint8") nyuso = faceCascade.detectMultiScale (imageArray, scaleFactor = 1.1, minWajirani = 5)

kwa (x, y, w, h) katika nyuso:

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

na wazi ("lebo", "wb") kama f:

kachumbari. dampo (lebo za Matangazo, f) f. funga ()

kitambuzi. mafunzo (xTrain, np.array (yLabels))

tambua kitambulisho ("mkufunzi.yml") chapa (lebo za matangazo)

Hatua ya 3: Kutambua Nyuso

baada ya mafunzo kumalizika sasa unaweza kukimbia nambari iliyo chini ili iweze kuanza kutambua sura zako zilizofunzwa

kuagiza osos.environ ['PYTHONINSPECT'] = 'on' import cv2 import numpy as np import pickle #import RPi. GPIO as GPIO from time import sleep

na wazi ('lebo', 'rb') kama f:

dicti = kachumbari. mzigo (f) f. funga ()

kamera = cv2. VideoCapture (0)

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

kitambuzi = cv2.face. LBPHFaceRecognizer_create () kitambulisho.soma ("mkufunzi.yml")

fonti = cv2. FONT_HERSHEY_SIMPLEX

mwisho ="

# kwa fremu katika kamera.

wakati Kweli: ret, fremu = kamera.soma () kijivu = cv2.cvtColor (fremu, cv2. COLOR_BGR2GRAY) nyuso = faceCascade.detectMultiScale (kijivu, scaleFactor = 1.5, min Majirani = 5) kwa (x, y, w, h) katika nyuso: roiGray = kijivu [y: y + h, x: x + w]

id_, conf = kutambua. utabiri (roiGray)

kwa jina, thamini katika dicti.items ():

ikiwa thamani == id_: chapa (jina) cv2.putText (fremu, jina, (x, y), fonti, 2, (0, 0, 255), 2, cv2. LINE_AA) ikiwa jina! = mwisho: mwisho = jina ikiwa conf <= 70: cv2. mstatili (fremu, (x, y), (x + w, y + h), (0, 255, 0), 2)

cv2.imshow ('fremu', fremu)

ufunguo = cv2.waitKey (1)

ikiwa ufunguo == 27:

kuvunja cv2.destroyAll Windows ()

Ilipendekeza: