一個簡單的人臉檢測Demo

放假回來,閒着翻了下電腦看見一個人臉識別的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循環外面  否則識別會有卡頓 這句爲了防止圖片一閃而過

 

 

識別結果(找了一張小姐姐多的圖片試驗)

 

時間長不學習,突然學點東西感覺挺充實的

 

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