1. 程式人生 > >人臉識別(筆記)

人臉識別(筆記)

案例一:顯示圖片
#1、匯入庫
import cv2
# 2、載入圖片
img = cv2.imread(r'C:\Users\HASEE\Desktop\image1.jpg')
#  3、建立一個視窗
cv2.namedWindow('meinv')
#  4、顯示圖片
cv2.imshow('meinv', img)
# 5、暫停圖片(如果不暫停,會關閉視窗)
cv2.waitKey(0)
# 6、關閉視窗
cv2.destroyAllWindows()
# 案例二:檢查圖片中的人臉
# 1、匯入庫
import cv2
# 2、載入圖片
img = cv2.imread('C:/Users/HASEE/Desktop/image1.jpg')
# 3、載入人物模型庫
face = cv2.CascadeClassifier('')
# 4、調整圖片灰度
gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
# 5、檢查人臉(用人臉模型庫去檢測灰度圖片中的人臉)
faces = face.detectMultiScale(gray)
# 6、標記人臉
for (x, y, w, h) in faces:
    #   引數一:標記圖片
    #   引數二:左上角的座標
    #   引數三:人臉大小
    #   引數四:矩形的顏色RGB (0, 255, 0)red:0 green:255 blue:0
    #   引數五:線框大小
    cv2.rectangle(img, (x, y), (x + w, y + h), (0, 255, 0), 10)
# 7、建立顯示視窗
cv2.namedWindow('chun')
# 8顯示圖片
cv2.imshow('meinv',img)
# 9暫停視窗
cv2.waitKey()
# 10關閉視窗
cv2.destroyAllWindows()
# 案例三:
# 1、匯入庫
import cv2
# 2、開啟攝像頭
capture = cv2.VideoCapture(0)
# 3、獲取攝像頭實時畫面
cv2.namedWindow('chunchun')
while True:
    # 3.1讀取攝像頭的每一幀的畫面
    # capture.read()會返回兩個引數
    # ret接收的值是True(有值),False(沒有值)   frame是尺寸大小
    ret, frame = capture.read()
    # 3.2顯示圖片
    cv2.imshow('chun', frame)
    # 暫停視窗
    if cv2.waitKey(5) & 0xFF == ord('q'):
        break
# 4、釋放資源
capture.release()
# 5、關閉視窗
cv2.destroyAllWindows()


# 案例四:人臉識別
# 思路:1、匯入庫
import cv2
# 2、載入人臉模型
face = cv2.CascadeClassifier(r'C:\Users\HASEE\Desktop\haarcascade_frontalface_alt.xml')
# 3、開啟攝像頭
capture = cv2.VideoCapture(0)
# 4、建立視窗
cv2.namedWindow('lalala')
# 5、獲取攝像頭真實畫面
while True:
    # 5.1讀取攝像頭每一幀的畫面
    ret, frame = capture.read()
    # 5.2灰度圖片(彩色的圖片佔用記憶體大,效能慢)
    gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)
    # 5.3檢查人臉
    faces = face.detectMultiScale(gray, 1.1, 3, 0, (100, 100))
    # 5.4標記人臉
    for (x, y, w, h) in faces:
        cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 255, 0), 2)
        # 顯示圖片
        cv2.imshow('chun', frame)
        # 暫停圖片
        if cv2.waitKey(5) & 0xFF == ord('q'):
            break
# 6、釋放資源
capture.release()
# 7、關閉視窗
cv2.destroyAllWindows()

簡單的人臉識別,當然Bug特別多。