1. 程式人生 > >【2018.12.24】python3.7+OpenCV 人臉識別(圖片+攝像頭)

【2018.12.24】python3.7+OpenCV 人臉識別(圖片+攝像頭)

一、識別影象中的人臉個數。註釋寫的很好(\(^o^)/恩)

#!/practice/Study_Test python
# -*- coding: utf-8 -*-
# @Time    : 2018/12/23 21:19
# @Author  : yb.w
# @File    : imageface.py
# @define  : 檢測圖片中的人臉,用矩形框標出
# OpenCv   :
# 使用OpenCV自帶庫引數資料

# 1.匯入庫
import cv2

# 2.載入圖片,載入模型

# 待檢測的圖片路徑
imagepath = r'./face1.jpg'
# 獲取訓練好的人臉的引數資料,這裡直接使用預設值
face_cascade = cv2.CascadeClassifier(r'./haarcascade_frontalface_alt.xml')
# 讀取圖片
image = cv2.imread(imagepath)

# 3.對圖片灰度化處理
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 4.檢測人臉,探測圖片中的人臉
faces = face_cascade.detectMultiScale(
    gray,
    scaleFactor=1.15,
    minNeighbors=5,
    minSize=(5, 5),
    # flags=cv2.cv.CV_HAAR_SCALE_IMAGE
)
print("發現{0}個人臉!".format(len(faces)))

# 5.標記人臉
for(x,y,w,h) in faces:
        # 1.原始圖片 2.人臉座標原點 3.標記的高度 4,線的顏色 5,線寬
        cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2)

# 6.顯示圖片
cv2.imshow("Find Faces!", image)

# 7.暫停視窗
cv2.waitKey(5000)

# 8.銷燬視窗
cv2.destroyAllWindows()

結果展示

二、攝像頭 人臉實時檢測

 

#!/practice/Study_Test python
# -*- coding: utf-8 -*-
# @Time    : 2018/12/23 21:25
# @Author  : yb.w
# @File    : videoface.py

# 四、使用攝像頭進行動態捕捉

# 1.匯入庫
import  cv2

# 2.載入人臉模型
faceModel = cv2.CascadeClassifier('./haarcascade_frontalface_alt.xml')

# 3.開啟攝像頭
capture = cv2.VideoCapture(0)

# 4.獲取攝像頭的實時畫面
while True:
    #4.1讀取每一幀的畫面
    ret,image = capture.read()

    #4.2灰度處理
    gray = cv2.cvtColor(image,cv2.COLOR_RGB2GRAY)

    #4.3檢查人臉
    # faces = faceModel.detectMultiScale(gray,1.1,3,0)
    faces = faceModel.detectMultiScale(
        gray,
        scaleFactor=1.15,
        minNeighbors=5,
        minSize=(5, 5),
        # flags=cv2.cv.CV_HAAR_SCALE_IMAGE
    )
    print("發現{0}個人臉!".format(len(faces)))

    #4.4標記人臉
    for(x,y,w,h) in faces:
        # 1.原始圖片 2.人臉座標原點 3.標記的高度 4,線的顏色 5,線寬
        cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2)

    #4.5顯示圖片
    cv2.imshow('人臉識別攝像頭',image)

    #4.6暫停視窗
    if cv2.waitKey(5) & 0xFF == ord('q'):
        break

# 5.釋放資源
capture.release()

# 6.銷燬視窗
cv2.destroyAllWindows()

結果展示

歡迎加麻花藤裙交流:728109091