實現功能:給定一張圖片,尋找圖中的人臉,並用矩形框標記,按下Esc鍵,關閉所有窗口
# !/user/bin/env python
# -☆- coding:utf-8 -☆-
# author:lishan time:2020/6/30
import cv2
# 讀取圖片
# demo.jpg爲圖片名,自己修改
image = cv2.imread('demo.jpg')
# 顯示圖片
cv2.imshow('orignal', image)
# 轉換爲灰度圖像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 加載haar檢測器
faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
# 人臉檢測
faces = faceCascade.detectMultiScale(
# 待檢測圖像
gray,
# 縮放因子
scaleFactor=1.15,
# 同一人臉的最小檢測標記個數
minNeighbors=2,
# 目標最小檢測尺寸大小
minSize=(5, 5)
)
# 打印人臉位置座標
# print(faces)
# 打印人臉個數
print('發現{0}個人臉!'.format(len(faces)))
# 標記人臉
for (x, y, w, h) in faces:
# 矩形標註
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 0)
# 顯示檢測結果
cv2.imshow('detect', image)
while True:
key = cv2.waitKey(1)
# 按下Esc鍵退出
if int(key) == 27:
break
# 銷燬所有窗口
cv2.destroyAllWindows()
檢測效果如下:
參考書籍:李立宗著. OpenCV輕鬆入門 面向Python[M]. 北京:電子工業出版社, 2019.05.
代碼來源:在書中第23章第一節中的代碼