Win10+PyCharm+Python3.7+Opencv:人臉簡單識別

操作系統:Win10 64位

PyCharm:這裏是社區版本,JetBrains PyCharm Community Edition 2019.1.2 x64

Python:Python 3.7.3

Opencv:opencv-python 4.1.0.25

根據網上的例程,可以從攝像頭獲取圖像,也可以直接讀取一個圖片進行測試,這裏使用圖片測試通過。

代碼如下:

 

import cv2

# 人臉識別分類器
faceCascade = cv2.CascadeClassifier(r'C:\Python37\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml')

# 識別眼睛的分類器
eyeCascade = cv2.CascadeClassifier(r'C:\Python37\Lib\site-packages\cv2\data\haarcascade_eye.xml')

# 開啓攝像頭
# cap = cv2.VideoCapture(0)
ok = True

while ok:
    # 讀取攝像頭中的圖像,ok爲是否讀取成功的判斷參數
    # ok, img = cap.read()
    # 轉換成灰度圖像
    # gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    img = cv2.imread("a2.jpg", cv2.IMREAD_ANYCOLOR)
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 人臉檢測
    faces = faceCascade.detectMultiScale(
        gray,
        1.1,
        3,
        minSize=(32, 32)
    )
    result = []
    # 在檢測人臉的基礎上檢測眼睛
    for (x, y, w, h) in faces:
        fac_gray = gray[y: (y + h), x: (x + w)]

        eyes = eyeCascade.detectMultiScale(fac_gray, 1.3, 2)

        # 眼睛座標的換算,將相對位置換成絕對位置
        for (ex, ey, ew, eh) in eyes:
            result.append((x + ex, y + ey, ew, eh))

    # 畫矩形
    for (x, y, w, h) in faces:
        cv2.rectangle(img, (x, y), (x + w, y + h), (127, 0, 0), 2)

    for (ex, ey, ew, eh) in result:
        cv2.rectangle(img, (ex, ey), (ex + ew, ey + eh), (0, 127, 0), 2)

    cv2.imshow('video', img)

    k = cv2.waitKey(1)
    if k == 27:  # press 'ESC' to quit
        break

# cap.release()
cv2.destroyAllWindows()

 

運行效果:

 

程序退出:直接點擊ESC鍵,或是點擊pycharm的紅色停止按鈕,直接點右上角關閉按鈕還關不掉。

這個識別還算可以吧,測試發現有可能把美女的大腿也識別成臉。。

 

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