คำสั่งพื้นฐาน Python ตรวจจับใบหน้าจากรูป


Python
Date 06 25, 2023

บทความนี้เป็นการเขียนโปรแกรม python ตรวจจับใบหน้าจากรูปภาพ โดยการใช้วิธีการ ของ Cascade Classifier โดยจะใช้ในงานที่ไม่ ซับซ้อนมาก เช่นการ หา วัตถุที่หายไป โดยต้องมีการ train Haar Cascade ไว้ตรวจจับวัตถุ ที่เราต้องการ ในบทความนี้โหลดได้จาก like download haarcascades ซึ่งเราสามารถดาวโหลดมาใช้ทดลองได้ โดยตัวแปรที่สำคัญ ในการกำหนดค่า นอกจากการ Train Haar Cascade แล้วนั้นดังนี้คือ

  1. Scale factor หมายถึงตัวปรับค่าที่ใช้ในการคูณหรือหารกับขนาดเดิมของภาพหรือวิดีโอ เพื่อให้ได้ขนาดที่ต้องการ โดยทั่วไป, ค่า scale factor ที่มากกว่า 1 จะทำให้ภาพหรือวิดีโอขยายขนาดใหญ่ขึ้น ส่วนค่า scale factor ที่น้อยกว่า 1 จะทำให้ภาพหรือวิดีโอย่อขนาดลง
  2. minNeighbors กำหนดจำนวนของพื้นที่ที่วัตถุจะถูกตรวจสอบว่ามีจุดคล้ายกันหรืออยู่ใกล้เคียงกัน หากมีจำนวนเต็มของพื้นที่ที่มีวัตถุที่พบอยู่ โดยที่ระยะห่างระหว่างวัตถุเป็นพื้นที่ห่างที่สุด (ค่าที่เหมาะสมสำหรับ minNeighbors) วัตถุที่ตรวจสอบจะถือว่าถูกต้อง ซึ่งจะช่วยลดเอาต์พุตที่เป็นเท็จลง

อุปกรณ์
  1. computer
  2. ติดตั้ง library opencv
  3. file haarcascade_frontalface_default.xml

Nature

รูปภาพที่จะนำมาตรวจจับใบหน้าเป็น รุปอดีต คณะรัฐมนตรีในประเทศไทย


Nature

รูป เมื่อทำการตรวจจับภาพใยหน้า

โค้ด Python

                
#การตรวจจับใบหน้าจากรูปภาพที่กำหนด

import cv2

#อ่านภาพ
img = cv2.imread("./Imageprocessing3-1.jpg")

#อ่านไฟล์ classification
face_cascade= cv2.CascadeClassifier("./Detec/haarcascade_frontalface_default.xml")

img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

#จำแนกใบหน้า
scaleFactor = 1.2  #ค่า scaleFactor1.1
minNeighber = 6   #ค่าตำที่สุด เจอกี่ตัวถึงจะเป้นใบหน้า 6
fact_detect = face_cascade.detectMultiScale(img_gray,scaleFactor,minNeighber)

#แสดงตำแหน่งที่เจอใบหน้า
for (x,y,w,h) in  fact_detect:
    cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),thickness=5)


#แสดงผลรูปภาพ
print("Detec Find :",fact_detect.shape[0])
cv2.imshow("result",img)
cv2.waitKey(0)
cv2.destroyAllWindows()