Page 172 - python
P. 172
146
11.13 การตรวจจับใบหนาดวย Haar Cascade
ั
Haar Cascades เปนการตรวจจบใบหนา เผยแพรในป พ.ศ. 2544 เปนการตรวจจับใบหนา
ั
ี่
ภายในภาพ โดย Viola และ Jones ไลบรารี่ OpenCV เปนเครื่องมือเกยวกบการประมวลผลภาพไดรวม
อัลกอริทึมตรวจจับใบหนาของ Haar Cascades เอาไวในไฟล haarcascade_frontalface_default.xml
ตัวอยางที่ 11.10 การตรวจจับใบหนาดวย Haar Cascades
%pylab inline
import cv2
!wget "https://dsdi.msu.ac.th/programming/haarcascade_frontalface_default.xml"
!wget "http://dsdi.msu.ac.th/articles/programming/lena.jpg"
model = cv2.CascadeClassifier("haarcascade_frontalface_default.xml")
img = cv2.imread("lena.jpg")
img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR)
faces = model.detectMultiScale(img, 1.3, 5)
for (x, y, w, h) in faces :
cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 2)
plt.imshow(img)
ผลลัพธ :
ภาพประกอบที่ 11.14 แสดงการตรวจจับใบหนาดวย Haar Cascade
ตัวอยางที่ 11.10 คําสั่ง %pylab inline เปนการขอใช numpy และ matplotlib คําสั่ง Import
cv2 เปนการขอใช opencv คําสั่ง wget เปนการโหลดไฟลจากเว็บ ในตัวอยางนี้โหลดไฟล
haarcascade_frontalface _default.xml เปนโมเดลในการตรวจจับใบหนา ตัวแปร model ใชสําหรับ
ตรวจจับใบหนาโดยสรางจากคําสั่ง CascadeClassifier() โดยโหลดคาน้ําหนักจากไฟล xml จากนั้นทํา
การโหลดภาพ lena ดวยคําสั่ง imread() และทําการตรวจจับดวยคําสั่ง detectMultiScale() ผลลัพธจะ