สารบัญ:
- ขั้นตอนที่ 1: การตรวจจับใบหน้าในวิดีโอแบบเรียลไทม์
- ขั้นตอนที่ 2: ฝึกอบรมภาพตัวอย่างของคุณ
- ขั้นตอนที่ 3: การจดจำใบหน้า
วีดีโอ: การตรวจจับใบหน้า การฝึกอบรม และการจดจำใบหน้า Opencv: 3 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
OpenCV เป็นไลบรารีคอมพิวเตอร์วิทัศน์แบบโอเพ่นซอร์สซึ่งเป็นที่นิยมอย่างมากสำหรับการประมวลผลภาพขั้นพื้นฐาน เช่น การเบลอภาพ การผสมภาพ การเพิ่มคุณภาพของภาพ ตลอดจนคุณภาพของวิดีโอ ขีดจำกัด เป็นต้น นอกจากการประมวลผลภาพแล้ว ยังให้การเรียนรู้เชิงลึกล่วงหน้าที่หลากหลายอีกด้วย แบบจำลองที่สามารถนำมาใช้โดยตรงในการแก้ปัญหาง่ายๆ ในมือ
สำหรับการติดตั้ง opencv ใช้ลิงค์นี้
www.instructables.com/id/Opencv-and-Python…
ขั้นตอนที่ 1: การตรวจจับใบหน้าในวิดีโอแบบเรียลไทม์
คุณสามารถค้นหาโปรแกรมตรวจจับใบหน้าจำนวนมากใน Google และใบหน้าที่ตรวจพบควรถูกบันทึกไว้ในโฟลเดอร์สำหรับการประมวลผลภาพเพิ่มเติม เช่น การฝึกอบรมและการติดป้ายกำกับ เราจะไปเก็บ 30 ตัวอย่าง
นำเข้า cv2
นำเข้า numpy เป็น np
นำเข้าระบบปฏิบัติการนำเข้าsys
กล้อง = cv2. VideoCapture(0)
faceCascade = cv2. CascadeClassifier("haarcascade_frontalface_default.xml") #add เส้นทางไฟล์ harcascade ของคุณ
name = raw_input("ชื่อของเขา/เธอคืออะไร")
#ไฟล์ทั้งหมดจะถูกบันทึกภายใต้โฟลเดอร์ Users/prasad/Documents/images
dirName = "/Users/prasad/Documents/images/" + ชื่อ
print(dirName) ถ้าไม่ใช่ os.path.exists(dirName): os.makedirs(dirName) print("Directory Created") else: print("ชื่อมีอยู่แล้ว") sys.exit()
นับ = 1
#เราจะไปเก็บ 30 ตัวอย่าง
ในขณะที่นับ 30: แตก # frame = frame.array grey = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) ใบหน้า = faceCascade.detectMultiScale (สีเทา, 1.5, 5) สำหรับ (x, y, w, h) ในใบหน้า: roiGray = grey[y:y+h, x:x+w] fileName = dirName + "/" + name + str(count) + ".jpg" cv2.imwrite(fileName, roiGray) cv2.imshow("face", 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: ฝึกอบรมภาพตัวอย่างของคุณ
หลังจากการตรวจจับใบหน้าเสร็จสิ้น เราก็ไปฝึกภาพกันได้เลย
นำเข้า osimport numpy เป็น np จาก PIL นำเข้าอิมเมจนำเข้า cv2 นำเข้าดอง #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(_file_))
#train ภาพภายใต้โฟลเดอร์ภาพ
imageDir = os.path.join(baseDir, "images")
รหัสปัจจุบัน = 1
labelIds = {} yLabels = xTrain = #ser.write("การฝึกอบรม…..".encode())
สำหรับ root, dirs, ไฟล์ใน os.walk(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(root) พิมพ์ (ฉลาก)
หากไม่ใช่ป้ายกำกับใน labelIds:
labelIds[label] = currentId พิมพ์ (labelIds) currentId += 1
id_ = labelIds [ป้ายกำกับ]
pilImage = Image.open(เส้นทาง).convert("L") imageArray = np.array(pilImage, "uint8") faces = faceCascade.detectMultiScale(imageArray, scaleFactor=1.1, minNeighbors=5)
สำหรับ (x, y, w, h) ในหน้า:
ผลตอบแทนการลงทุน = imageArray[y:y+h, x:x+w] xTrain.append(roi) yLabels.append(id_)
ด้วย open("labels", "wb") เป็น f:
pickle.dump (labelIds, f) f.close ()
จดจำ.train(xTrain, np.array(yLabels))
จดจำ.save("trainer.yml") พิมพ์(labelIds)
ขั้นตอนที่ 3: การจดจำใบหน้า
หลังจากการฝึกสิ้นสุดลง คุณสามารถรันโค้ดด้านล่างเพื่อให้มันเริ่มจดจำใบหน้าที่คุณฝึกได้
import osos.environ['PYTHONINSPECT'] = 'on' import cv2 import numpy as np import pickle #import RPi. GPIO as GPIO from time import sleep
ด้วย open('labels', 'rb') เป็น f:
dicti = ดองโหลด (f) f.close ()
กล้อง = cv2. VideoCapture(0)
faceCascade = cv2. CascadeClassifier ("haarcascade_frontalface_default.xml")
ตัวจำแนกลายมือ = cv2.face. LBPHFaceRecognizer_create() recognitionr.read("trainer.yml")
แบบอักษร = cv2. FONT_HERSHEY_SIMPLEX
สุดท้าย=''
#for เฟรมใน camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):
ในขณะที่ True: ret, frame = camera.read() grey = cv2.cvtColor(frame, cv2. COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale(gray, scaleFactor = 1.5, minNeighbors = 5) สำหรับ (x, y, w, h) ในหน้า: roiGray = grey[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= ชื่อ if conf <= 70: cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
cv2.imshow('เฟรม', เฟรม)
คีย์ = cv2.waitKey(1)
ถ้าคีย์ == 27:
ทำลาย cv2.destroyAllWindows()
แนะนำ:
เครื่องสแกนโค้ด QR โดยใช้ OpenCV ใน Python: 7 ขั้นตอน
เครื่องสแกนรหัส QR การใช้ OpenCV ใน Python: ในโลกปัจจุบันนี้ เราเห็นรหัส QR และบาร์โค้ดถูกใช้เกือบทุกที่ตั้งแต่บรรจุภัณฑ์ของผลิตภัณฑ์ไปจนถึงการชำระเงินออนไลน์ และทุกวันนี้ เราเห็นรหัส QR แม้แต่ในร้านอาหารเพื่อดูเมนู ดังนั้นไม่ สงสัยว่าตอนนี้เป็นความคิดที่ยิ่งใหญ่ แต่เคยไหม
Rubik's Cube Blindfolded Solver แบบเรียลไทม์โดยใช้ Raspberry Pi และ OpenCV: 4 ขั้นตอน
Rubik's Cube Blindfolded Solver แบบเรียลไทม์โดยใช้ Raspberry Pi และ OpenCV: นี่เป็นเครื่องมือคิวบ์รูบิครุ่นที่ 2 ที่สร้างขึ้นสำหรับการแก้ผ้าปิดตา เวอร์ชันที่ 1 ได้รับการพัฒนาโดย javascript คุณสามารถเห็นโปรเจ็กต์ RubiksCubeBlindfolded1 ซึ่งต่างจากเวอร์ชันก่อนหน้า เวอร์ชันนี้ใช้ไลบรารี OpenCV เพื่อตรวจจับสีและเ
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: 6 ขั้นตอน
Vision 4all - Sistema Visão Assistida Para Deficientes Visuais Usando OpenCV, Dragonboard 410c E Aplicativo Android: DESCRIÇÃOO ใช้งานง่าย é ดาร์ autonomia para deficientes visuais se locomoverem em Ambientes ในร่ม como casas ou ศูนย์การค้า e aeroportos.A locomoço สภาพแวดล้อม j´ mapeados pode ou n&o s
Colec.te - Lixeira Inteligente Qualcomm Dragonboard 410c + OpenCV: 7 ขั้นตอน
Colec.te - Lixeira Inteligente Qualcomm Dragonboard 410c + OpenCV: ความอัจฉริยะของ Lixeira ประกอบด้วยการแยกส่วนอัตโนมัติ เว็บแคม Através de uma, ela identifica o tipo de lixo e o deposita no compartimento adequado para posteriormente ser reciclado
การตรวจจับใบหน้า+การจดจำใบหน้า: 8 ขั้นตอน (พร้อมรูปภาพ)
การตรวจจับใบหน้า+การจดจำใบหน้า: นี่เป็นตัวอย่างง่ายๆ ของการตรวจจับใบหน้าและการจดจำใบหน้าด้วย OpenCV จากกล้อง หมายเหตุ: ฉันทำโครงการนี้เพื่อประกวดเซ็นเซอร์ และฉันใช้กล้องเป็นเซ็นเซอร์เพื่อติดตามและจดจำใบหน้า ดังนั้นเป้าหมายของเราในเซสชันนี้ 1. ติดตั้งอนาคอนด้า