放假回來,閒着翻了下電腦看見一個人臉識別的Demo 照着做了下,遇到了一些小麻煩,好在做出來了,挺有意思。
說一下環境:
安裝好了Tensorflow Pycharm 等環境,在網上看到了這份代碼
https://blog.csdn.net/weixin_39329548/article/details/81541888
然後複製到Pycharm中,虛擬環境我設置爲
Inherit global site-packages繼承了全局的虛擬環境,這樣不用每個包都安裝一遍了,缺哪個包再單獨安裝
下面是源代碼
import cv2 pathofeye='/home/apollo/pan/cv2/data/haarcascades/haarcascade_eye.xml' pathoffront='/home/apollo/pan/cv2/data/haarcascades/haarcascade_frontalface_default.xml' ''' 這裏注意一定要用全路徑 否則報錯 error: (-215) !empty() in function cv::CascadeClassifier::detectMultiScale 具體參照 https://blog.csdn.net/qq_20156437/article/details/80702022 我從網上下載了cv2 (https://github.com/opencv/opencv) 這裏麪包含了分類器模型haarcascade_eye.xml等 我保存的位置是 /home/apollo/pan/cv2/data/haarcascades/ 一定要能尋找到分類器模型 ''' faceCascade = cv2.CascadeClassifier(pathoffront) image = cv2.imread(r"time.jpg") #讀取圖片 這裏可以加一個判斷,否則沒有讀取到圖片還會引起其他莫名其妙的錯誤 size = image.shape h, w = size[0], size[1] #獲取圖片的大小 後續我根據這個比例縮放 print (h,w) #打印大小 gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) faces = faceCascade.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=5, minSize=(30, 30),) for (x, y, width, height) in faces: cv2.rectangle(image, (x, y), (x + width, y + height), (0, 255, 0), 2) im2 = cv2.resize(image, (int(w*0.55), int(h*0.55)), interpolation=cv2.INTER_CUBIC) # int(w*0.55), int(h*0.55)是按照55%的比例縮放,注意這個參數只接受整數,這裏需要轉換一下 cv2.imshow("Face", im2)
cv2.waitKey(0) #注意 這裏的等待要放在for循環外面 否則識別會有卡頓 這句爲了防止圖片一閃而過
識別結果(找了一張小姐姐多的圖片試驗)
時間長不學習,突然學點東西感覺挺充實的