基於opencv實現簡單人臉檢測

箏弈發表於2022-12-06

作用:在影片中自動檢測出人臉

使用內容:灰度轉換,分類器,矩形框選,圓形框選,攝像頭讀取及釋放

程式碼邏輯:

  1. 先讀取攝像頭後,
  2. 對攝像頭拍攝到的圖片進行逐幀分析,
  3. 並對影像進行灰度轉換後使用類選擇器識別,
  4. 最後將識別出來的部分用矩形框和圓形框框選,
  5. 在把圖片返回,
  6. 然後列印圖片幀的座標,
  7. 如果檢測鍵盤摁下q那麼解釋結束迴圈
  8. 釋放記憶體和攝像頭。
import cv2 as cv


def face_detect_demo(img):
    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    face_detect = cv.CascadeClassifier('E:/opencv/opencv-4.6.0/data/haarcascades/haarcascade_frontalface_alt2.xml')
    face = face_detect.detectMultiScale(gray)
    for x, y, w, h in face:
        cv.rectangle(img, (x, y), (x + w, y + h), color=(0, 0, 255), thickness=2)
        cv.circle(img, center=(x + w // 2, y + h // 2), radius=(w // 2), color=(255, 0, 0), thickness=2)
    cv.imshow('result', img)


# 讀取攝像頭
cap = cv.VideoCapture(0, cv.CAP_DSHOW)
# cap = cv.VideoCapture('picture/arti.mp4')
# 迴圈
while True:
    flag, frame = cap.read()
    if not flag:
        break
    face_detect_demo(frame)
    print(frame, frame.shape)
    if ord('q') == cv.waitKey(1):
        break
# 釋放記憶體
cv.destroyAllWindows()
# 釋放攝像頭
cap.release()

總結:
主要是呼叫了opencv裡面的分類器的庫,需要注意的是圓形框選物件時計算好框選的位置範圍。

相關文章