我是靠谱客的博主 刻苦寒风,这篇文章主要介绍基于opencv-python的人脸识别、眼睛识别和微笑识别,现在分享给大家,希望可以做个参考。

目录

前言

1.1 静态识别

1.1.1 原始图像展示

1.1.2 代码

1.1.3 识别效果展示

1.2 动态识别

1.2.1 代码

1.2.2 识别效果展示


前言

开源一个小项目,关于人脸识别,眼睛识别和微笑识别的,识别模型是opencv系统自带的,使用的语言是python,开发环境python3.9,编译器pycharm2022。


1.1 静态识别

静态识别顾名思义,就是对一张图片上的人脸,眼睛和微笑进行识别,废话不多说,直接开始。


1.1.1 原始图像展示


1.1.2 代码

复制代码
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
# 图片人脸检测,眼睛检测,微笑检测 import cv2 face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades +"haarcascade_frontalface_default.xml") eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades +"haarcascade_eye.xml") smile_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_smile.xml') img = cv2.imread(r'D:Pythonprojectopencv-pythonpicture1.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3, 3) if len(faces) > 0: for faceRect in faces: x, y, w, h = faceRect cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 4) roi_gray = gray[y:y + h, x:x + w] roi_color = img[y:y + h, x:x + w] eyes = eye_cascade.detectMultiScale(roi_gray, 1.1, 3,cv2.CASCADE_SCALE_IMAGE,(100,100),(150,150)) #最小尺寸、最大尺寸排除干扰 for (ex, ey, ew, eh) in eyes: cv2.rectangle(roi_color, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 4) smiles = smile_cascade.detectMultiScale(roi_gray, 1.2, 10, cv2.CASCADE_SCALE_IMAGE,(180,60),(200,60)) for (ex, ey, ew, eh) in smiles: cv2.rectangle(roi_color, (ex, ey), (ex + ew, ey + eh), (0, 0, 255), 4) cv2.putText(img, 'Smile', (x, y - 6), 3, 1.2, (0, 0, 255), 2, cv2.LINE_AA) cv2.imshow("img", img) cv2.waitKey(0)

1.1.3 识别效果展示

要想有更好的识别效果可以通过调整以下三个函数的参数,具体用法可自行查找,就不赘述。

face_cascade.detectMultiScale()

eye_cascade.detectMultiScale()

smile_cascade.detectMultiScale()


1.2 动态识别

动态识别,就是利用电脑自带的摄像头进行图像采集,对采集到的图像实时检测人脸,眼睛和微笑,废话不多说,直接开始。


1.2.1 代码

复制代码
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
# 电脑摄像头人脸检测,眼睛检测,微笑检测 import cv2 frameWidth = 640 frameHeight = 480 cap = cv2.VideoCapture(0) #cap.set函数中的3为帧的宽度、4为高度、10为亮度 cap.set(3, frameWidth) cap.set(4, frameHeight) cap.set(10,150) face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades +"haarcascade_frontalface_default.xml") eye_cascade = cv2.CascadeClassifier(cv2.data.haarcascades +"haarcascade_eye.xml") smile_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_smile.xml') while True: success, img = cap.read() gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) faces = face_cascade.detectMultiScale(gray, 1.3, 3,cv2.CASCADE_SCALE_IMAGE,(200,200),(250,250)) for faceRect in faces: x, y, w, h = faceRect cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 4) roi_gray = gray[y:y + h, x:x + w] roi_color = img[y:y + h, x:x + w] eyes = eye_cascade.detectMultiScale(roi_gray, 1.25, 3,cv2.CASCADE_SCALE_IMAGE,(40,40),(50,50)) #最小尺寸、最大尺寸排除干扰 for (ex, ey, ew, eh) in eyes: cv2.rectangle(roi_color, (ex, ey), (ex + ew, ey + eh), (0, 255, 0), 4) smiles = smile_cascade.detectMultiScale(roi_gray, 1.4, 3,cv2.CASCADE_SCALE_IMAGE,(80,40),(100,40)) for (ex, ey, ew, eh) in smiles: cv2.rectangle(roi_color, (ex, ey), (ex + ew, ey + eh), (0, 0, 255), 4) cv2.putText(img, 'Smile', (x, y - 6), 3, 1.2, (0, 0, 255), 2, cv2.LINE_AA) cv2.imshow("img", img) if cv2.waitKey(1) & 0xFF == ord('q'): # 按下q键结束进程 break

1.2.2 识别效果展示

笑的有点僵硬,效果就是这个样子;同静态一样,要想有更好的识别效果可以通过调整以下三个函数的参数,具体用法,自行学习。

face_cascade.detectMultiScale()

eye_cascade.detectMultiScale()

smile_cascade.detectMultiScale()

END

最后

以上就是刻苦寒风最近收集整理的关于基于opencv-python的人脸识别、眼睛识别和微笑识别的全部内容,更多相关基于opencv-python内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部