-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathimgFaceDetect.py
More file actions
47 lines (37 loc) · 1.58 KB
/
imgFaceDetect.py
File metadata and controls
47 lines (37 loc) · 1.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import cv2
filepath = "test2.jpg"
img = cv2.imread(filepath) # 读取图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 转换灰色
# OpenCV人脸识别分类器 括号中内容为识别器脚本的地址
faceClassifier = cv2.CascadeClassifier(
r"./openCv/opencv/data/haarcascades/haarcascade_frontalface_default.xml"
)
eyesClassifier = cv2.CascadeClassifier(
r"./openCv/opencv/data/haarcascades/haarcascade_eye.xml"
)
colorSet = [(0, 191, 255), (255, 191, 0)] # 定义矩形颜色 - DeepSkyBlue1
# 调用openCv人脸试别模块
faceRects = faceClassifier.detectMultiScale(
gray, scaleFactor=1.2, minNeighbors=3, minSize=(70, 70))
eyesRects = eyesClassifier.detectMultiScale(
gray, scaleFactor=1.1, minNeighbors=3, minSize=(15, 15))
finalEyeRects = []
if len(faceRects) and len(eyesRects): # 大于0
for faceRect in faceRects:
for eyesRect in eyesRects:
if (eyesRect[0] > faceRect[0]
and eyesRect[1] > faceRect[1]
and eyesRect[0] + eyesRect[2] < faceRect[0] + faceRect[2]
and eyesRect[1] + eyesRect[3] < faceRect[1] + faceRect[3]):
finalEyeRects.append(eyesRect)
for faceRect in faceRects: # 框出每一张人脸
x, y, w, h = faceRect
# 框出人脸
cv2.rectangle(img, (x, y), (x + h, y + w), colorSet[0], 2)
for eyesRect in finalEyeRects: # 框出每一只眼睛
x, y, w, h = eyesRect
# 框出眼睛
cv2.rectangle(img, (x, y), (x + h, y + w), colorSet[1], 2)
cv2.imshow("image", img) # 显示图像
cv2.waitKey(0)
cv2.destroyAllWindows()