เมื่อพูดถึงการตรวจจับใบหน้าเราต้องเข้าใจตัวจําแนกคุณลักษณะ HAAR ก่อน ในการกล่าวอย่างตรงไปตรงมาตัวจําแนกคุณลักษณะ HAAR เป็นชุดของไฟล์ XML ซึ่งอธิบายถึงค่าลักษณะของส่วนต่าง ๆ ของร่างกายมนุษย์เช่นใบหน้าดวงตา ฯลฯ ไฟล์คุณสมบัติต่อไปนี้มีให้ใน OpENCV3.2.0:
haarcascade_eye.xml
haarcascade_eye_tree_eyeglasses.xml
haarcascade_frontalcatface.xml
haarcascade_frontalcatface_extended.xml
haarcascade_frontalface_alt.xml
haarcascade_frontalface_alt_tree.xml
haarcascade_frontalface_alt2.xml
haarcascade_frontalface_default.xml
haarcascade_fullbody.xml
haarcascade_lefteye_2splits.xml
haarcascade_licence_plate_rus_16stages.xml
haarcascade_lowerbody.xml
haarcascade_profileface.xml
haarcascade_righeye_2splits.xml
haarcascade_russian_plate_number.xml
haarcascade_smile.xml
haarcascade_upperbody.xml
โดยการโหลดไฟล์คุณสมบัติที่แตกต่างกันเอฟเฟกต์การตรวจจับที่สอดคล้องกันสามารถทำได้
คำอธิบายของพารามิเตอร์ฟังก์ชัน DetectMultiscale ใน OpenCV3.2.0:
DetectMultiscale (ภาพ MAT, วัตถุ matofrect, double scalefactor, int minneighbors, int, ขนาด minsize, ขนาด maxsize)
ภาพ: ภาพที่ตรวจพบโดยทั่วไปคือระดับสีเทา (ปรับปรุงประสิทธิภาพ)
วัตถุ: กลุ่มเวกเตอร์กล่องสี่เหลี่ยมของวัตถุที่ตรวจพบ
ScaleFactor: ค่าสัมประสิทธิ์สเกลของหน้าต่างการค้นหาในการสแกนสองครั้งติดต่อกัน ค่าเริ่มต้นคือ 1.1 นั่นคือแต่ละหน้าต่างการค้นหาจะขยายตามลำดับ 10%
Minneighbors: จำนวนขั้นต่ำของสี่เหลี่ยมที่อยู่ติดกันซึ่งเป็นเป้าหมายการตรวจจับ (ค่าเริ่มต้นคือ 3)
แฟล็ก: ใช้ค่าเริ่มต้นหรือใช้ CV_HAAR_DO_CANNY_PRUNING หากตั้งค่าเป็น CV_HAAR_DO_CANNY_PRUNING ฟังก์ชั่นจะใช้การตรวจจับขอบ Canny เพื่อแยกพื้นที่ที่มีขอบมากเกินไปหรือน้อยเกินไปดังนั้นพื้นที่เหล่านี้มักจะไม่เป็นพื้นที่ที่ใบหน้าอยู่
Minsize: ช่วงขั้นต่ำของพื้นที่เป้าหมายที่ได้รับ
MaxSize: ช่วงสูงสุดของพื้นที่เป้าหมายที่ได้รับ
รหัสตัวอย่างการตรวจจับใบหน้า:
นำเข้า org.opencv.core.core; นำเข้า org.opencv.core.mat; นำเข้า org.opencv.core.matofrect; นำเข้า org.opencv.core.point; นำเข้า org.opencv.core.rect; นำเข้า org.opencv.core.scalar; org.opencv.imgproc.imgproc; นำเข้า org.opencv.objdetect.cascadeclassifier; คลาสสาธารณะ Facedetect {โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// toDo วิธีการที่กำหนดอัตโนมัติระบบ System.out.println ("/nrunning facedetector"); cascadeclassifier Facedetector = ใหม่ cascadeclassifier (); facedetector.load ("c: // ไฟล์โปรแกรม // opencv // แหล่งที่มา // data // haarcascades // haarcascades // haarcascades_frontalface_alt.xml"); ภาพ mat = imgcodecs.imread ("f: //1114.jpg"); Matofrect Facedetections = new Matofrect (); Facedetector.DetectMultiscale (ภาพ, ใบหน้า); System.out.println (string.format ("ตรวจพบ %s Faces", facedetections.toarray (). ความยาว)); สำหรับ (rect rect: facedetections.toarray ()) {imgproc.rectangle (ภาพ, จุดใหม่ (rect.x, rect.y), จุดใหม่ (rect.x + rect.width, rect.y + rect.height), New Scalar (0, 255, 0)); } string filename = "f: //ouput.jpg"; imgcodecs.imwrite (ชื่อไฟล์, รูปภาพ); - ภาพแหล่งที่มาและไดอะแกรมผลลัพธ์:
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น