Posts

Showing posts with the label face

[iOS Dev] Face Detection with Core Image (Part II)

Image
มาต่อกันนะครับ Blog ที่แล้วเราทำการ Detect ได้จุดของวัตถุต่างๆ ละ  คราวนี้เราจะทำการวาดกรอบของสิ่งที่เรา Detect ได้กัน ผลลัพธ์ที่ได้ก็ประมาณนี้นะ  ปัญหาแรกที่จะเกิดขึ้นและทำให้งงคือ Coordinates System ของ UIKit และ Core Image นั้นต่างกัน และทำให้ใครหลายคน (รวมทั้งตัวผมเอง) งง และเกิด Bug ไปอ่าน Entry นี้กันก่อนนะ :) [iOS Dev] UIKit and Core Image Coordinates System เราได้ทำการกะขนาดของ ปาก และ ตา ไว้ดังนี้ (โดยอ้างอิงจากขนาดของใบหน้า) จากนั้นผมก็จะทำการวาดกรอบของ Face Feature ต่างๆ ซึ่งนี่แแหละ เป็นเรื่องที่ยุ่งยาก เพราะจะวาดเลยก็ไม่ได้เนื่องจาก Coordinates System ไม่เหมือนกัน ตามที่กล่าวไปข้างต้น (Code ส่วนนี้เป็นส่วนหนึ่งของ - (void)faceDetection; ใน Part I) และเรื่อง Coordinates System ของ UIKit และ Core Image นั้นไม่เหมือนกัน จึงต้องทำการแปลงให้เรียบร้อยก่อน ซึ่งผมก็แยกเขียน method การแปลงจุดและกรอบออกมา ส่วนเรื่องการวาด ตอนแรกผมนั่งมึนว่าจะใช้อะไรวาดดี = =' ลองใช้ Quartz 2D แล้วสำหรับผมคงยากไป ... ไม่ชอบเลย เลยสดโดยใช้ UIView นี่แหละครับ ง่ายดี ...

[iOS Dev] Face Detection with Core Image (Part I)

Image
การทำ Face Feature Detection บน iOS นั้น ไม่ยากเลย เพราะมีของให้ใช้อยู่แล้ว พระเอกในงานนี้ก็คือ Core Image ซึ่งเป็น Library ที่ถูกบรรจุมาตั้งแต่ iOS 5 SDK และสิ่งที่เราใช้ในการ Detection ก็คือ CIDetector Class โดย CIDetector สำหรับการทำ Face Feature Detection จะสามารถ Detect ได้ 4 อย่าง นั่นคือ กรอบหน้า (Face Rectangle), ปาก (Mouth), ตาซ้าย (Left Eye) และ ตาขวา (Right Eye) ขั้นแรกก็จัดการสร้าง UIImageView และใส่ภาพที่ต้องการลงไป ** ก่อนที่จะใส่ภาพ เราควรจะย่อภาพให้เท่ากับขนาดของ UIImageView ซะก่อน เนื่องจาก Core Image จะใช้ขนาดต้นฉบับของภาพ ซึ่งไม่ตรงกับที่เราเห็นบน UIImageView แล้วจะทำให้การ Detect เกิดความผิดพลาด (Code ของการย่อภาพอยู่ใน Part II) ส่วนวิธีการทำ Face Detection ก็ไม่ยากเลยครับ ใช้ Code เพียงเท่านี้เอง แค่นี้เราก็จะได้ NSArray ของ CIFaceFeature Object มาใช้งานแล้วล่ะครับ ต่อไปเราจะมาวาดกรอบให้ใบหน้า, ปาก, ตาซ้าย และ ตาขวานะครับ ซึ่งผมตัดสินใจแยกออกไปอีก Blog (ผมกลัวคนอ่านตาลายกับ Code)