Python20行代碼進行人臉識別

功能介紹

使用OpenCV進行人臉識別

代碼

import cv2

filename = "images/human.jpg"

def detect(filename):
    # haarcascade_frontalface_default.xml存儲在package安裝的位置
    face_cascade = cv2.CascadeClassifier("data/haarcascade_frontalface_default.xml")
    img = cv2.imread(filename)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    #傳遞參數是scaleFactor和minNeighbors,分別表示人臉檢測過程中每次迭代時圖像的壓縮率以及每個人臉矩形保留近鄰數目的最小值
    #檢測結果返回人臉矩形數組
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    for (x, y, w, h) in faces:
        img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
    cv2.namedWindow("Face Detected!")
    cv2.imshow("Face Detected!", img)
    cv2.imwrite("images/Face.jpg", img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

detect(filename)

識別結果

識別結果

攝像頭實時識別

import cv2


def detect():
    face_cascade = cv2.CascadeClassifier("data/haarcascade_frontalface_default.xml")
    eye_cascade = cv2.CascadeClassifier("data/haarcascade_eye.xml")
    camera = cv2.VideoCapture(0)
    while True and cv2.waitKey(1) == -1:
        ret, frame = camera.read()
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        faces = face_cascade.detectMultiScale(gray, 1.3, 5)
        for (x, y, w, h) in faces:
            img = cv2.rectangle(frame, (x, y), (x + w, y + h), (255, 0, 0), 2)
            roi_gray = gray[y:y + h, x:x + w]
            eyes = eye_cascade.detectMultiScale(roi_gray, 1.03, 5, 0, (40, 40))
            for (ex, ey, ew, eh) in eyes:
                # 由於是在原圖片上修改,所以需要加上原來座標
                cv2.rectangle(img, (x + ex, y + ey), (x + ex + ew, y + ey + eh), (0, 255, 0), 2)
        cv2.imshow("camera", frame)
    camera.release()
    cv2.destroyAllWindows()


detect()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章