Агуулгын хүснэгт:

Opencv Нүүр илрүүлэх, сургах, таних: 3 алхам
Opencv Нүүр илрүүлэх, сургах, таних: 3 алхам

Видео: Opencv Нүүр илрүүлэх, сургах, таних: 3 алхам

Видео: Opencv Нүүр илрүүлэх, сургах, таних: 3 алхам
Видео: OpenCV Face, Eye, Body detection Android App Test 2024, Долдугаар сарын
Anonim
Opencv Нүүр илрүүлэх, сургалт, таних
Opencv Нүүр илрүүлэх, сургалт, таних

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

opencv суулгахын тулд энэ холбоосыг ашиглана уу

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

Алхам 1: Бодит цагийн видеогоор нүүрээ илрүүлэх

Та нүүр царай илрүүлэх олон програмыг google -ээс хайж олох боломжтой бөгөөд илрүүлсэн царайг фолдерт хадгалж, сургалт, тэмдэглэгээ гэх мэт дүрсийг цаашид боловсруулах боломжтой болно. Бид 30 дээж цуглуулах гэж байна

cv2 импортлох

np гэж numpy импортлох

импортлох систем импортлох

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

faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml") #өөрийн файлын замыг нэмнэ үү

name = raw_input ("Түүний нэр хэн бэ?")

#бүх файлыг хэрэглэгчид/prasad/Documents/images хавтсанд хадгалах болно

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

хэвлэх (dirName) байхгүй бол os.path.exists (dirName): os.makedirs (dirName) хэвлэх ("Лавлах үүсгэсэн") өөр: хэвлэх ("Нэр аль хэдийн байна") sys.exit ()

тоолох = 1

#бид 30 дээж цуглуулах гэж байна

30 тоо тоолоход: break # frame = frame.array gray = cv2.cvtColor (frame, cv2. COLOR_BGR2GRAY) faces = 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 (frame, (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: Дээж зургуудаа сургах

Нүүрний илрүүлэлт дууссаны дараа бид зургуудыг сургахаар явж болно

PIL импортоос nim байдлаар osimport numpy импортлох Импорт cv2 импортлох даршилсан импорт #импорт сериал

#ser = serial. Serial ('/dev/ttyACM0', 9600, timeout = 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 ("Сургалт…..". кодлох ())

os.walk дахь root, dirs, файлуудын хувьд (imageDir):

файл доторх файлыг хэвлэх (root, dirs, files): print (file) if file.endswith ("png") or file.endswith ("jpg"): path = os.path.join (root, file) label = os.path.basename (root) хэвлэх (шошго)

labelIds дээр шошго оруулаагүй бол:

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

id_ = labelIds [шошго]

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 хэлбэрээр:

даршилсан хаягдал (labelIds, f) f.close ()

танигч.трэйн (xTrain, np.array (yLabels))

хүлээн авагч.save ("trainer.yml") хэвлэх (labelIds)

Алхам 3: Нүүр царайг таних

Сургалт дууссаны дараа та доорх кодыг ажиллуулж болох бөгөөд ингэснээр таны бэлтгэгдсэн царайг таних болно

импорт osos.environ ['PYTHONINSPECT'] = 'дээр' импорт cv2 -ийг np импорт даршилсан байдлаар импортлох

нээлттэй байдлаар ('шошго', 'rb') f хэлбэрээр:

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 () саарал = 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 ('хүрээ', хүрээ)

түлхүүр = cv2.waitKey (1)

хэрэв түлхүүр == 27:

завсарлага cv2.destroyAllWindows ()

Зөвлөмж болгож буй: