人臉識別(筆記)
阿新 • • 發佈:2018-11-11
案例一:顯示圖片 #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特別多。