- 10 ความคิดเห็น
Face detection เป็นเทคนิคที่ใช้ตรวจหาใบหน้าคนในรูปภาพ
โดยใน emgucv มีฟังค์ชั่นที่สนับสนุนในการทำ face detection อยู่แล้ว
โดยในบทความนี้ผมจะขอนำเสนอในส่วนของการใช้ฟังค์ชั่น face detection ของ emgucv
เท่านั้น
ถ้าอยากศึกษารายละเอียดเพิ่มเติมในเรื่องหลักการ และอัลกอลิทึมที่ในการทำ face
detection ให้ลองศึกษาที่นี้ นะครับ <<คลิ๊ก>> เอาล่ะครับเรามาเข้าเรื่องของเราเลยดีกว่า
ขั้นแรก เปิดไฟล์ Lab5 ก่อนเลยครับ ถ้าใครยังไม่ได้ทำ Lab5 ให้ <<คลิกที่นี้>> เพื่อศึกษาและทำ Lab5 ก่อนนะครับ
ขั้นที่สอง เข้าไปที่ฟังค์ชั่น process() และแปลงภาพที่เรา
capture มาเป็น grayscale นะครับ โดยเพิ่ม โค๊ดส่วนนี้เข้าไป
Image<Gray, byte> grayImg = cameraImage.Convert<Gray, byte>();
ขั้นที่สาม สร้าง haar
object ขึ้นมาโดยใช้ไฟล์ XML จาก library นะครับ (ผมลง emguCV
ไว้ในไดร์ว
C นะครับ)
HaarCascade haar = newHaarCascade("C:\\Emgu\\emgucv-windows-x86 2.4.0.1717\\opencv\\data\\haarcascades\\haarcascade_frontalface_default.xml");
ขั้นที่สี่ เรียกใช้ฟังค์ชั่น DetectHaarCascade ครับ
var faces = grayImg.DetectHaarCascade(haar, 1.4,4,HAAR_DETECTION_TYPE.FIND_BIGGEST_OBJECT,new Size(cameraImage.Width / 8, cameraImage.Height / 8))[0];
ขั้นสุดท้าย แสดงผล
MCvFont f = newMCvFont(FONT.CV_FONT_HERSHEY_COMPLEX,1.0, 0.5); //ประกาศ font
foreach(var face in faces)
{
int x = face.rect.X;
int y = face.rect.Y;
int width = face.rect.Width;
int height = face.rect.Height;
cameraImage.Draw(face.rect, new Bgr(0, 0, 255), 1); //วาดสี่เหลี่ยม
cameraImage.Draw("X : " + x+" ,Y : "+y, ref f, new Point(20, 20), new Bgr(0, 0, 255)); //แสดงค่า X , Y
cameraImage.Draw("Width : " + width+" Height : "+height, ref f, new Point(20, 50), new Bgr(0, 0, 255)); //แสดงค่า width , Height
}
Output
หวังว่าบทความนี้จะมีประโยชน์กับผู้ที่กำลังเริ่มต้น เรียนรู้ OpenCV และ emguCV นะครับ ถ้าหากชอบก็กด Like แต่ถ้าใช่ก็กด แชร์ นะครับ ^_^
10 ความคิดเห็น
นายแบบหล่อจุงเบยครับ
น่าสอนใจมากครับ ครับ ผม bookmark เว็บนี้เรียนร้อยแล้ว เดียว ของ ทำ ดู ก่อน ติดตรงไหรเดียว มา ถาม ครับ
ยินดีเลยครับ ^_^
ถ้าจะให้จับหลายๆหน้าต้องเขียนยังไงอ่ะคับ
เวลา รันโปรแกรม มันจะมี กรอบ แดงขึ้นมาเหมือนพี่ไหมครับ แต่ผมรันแล้วมันไม่ขึ้นครับ
เวลารันโปรแกรมแล้วจะมีกรอบสีแดงขึ้นเหมือนผมนะครับ
ของผมก้ไม่ขึ้น -0-
อาห์.. ขอบคุณมากๆครับ รักเลย <3
ขอถามนะครับ ถ้าผมต้องการอวัยวะอื่นที่ไม่ใช่ใบหน้า ต้องไปประยุกต์ตรงที่คำสั่งไหนหรอครับ ผมต้องการเขียนจับการเคลื่อนไหวของรถบนถนนอ่าคับ
กล้องมันกลับด้านอะครับ ทำยังไงดี
Post a Comment