情感检测器用于许多行业, 其中一个是媒体行业, 对于公司来说, 确定公众对其产品的反应非常重要。在本文中, 我们将使用OpenCV构建一个微笑检测器, 该检测器将从网络摄像头中获取实时信息。我们将要实现的微笑/幸福检测器将是一个原始的检测器, 存在许多更好的实现方法。
第1步:首先, 我们需要导入OpenCV库。
import cv2
第2步:包括所需的haar级联。
Haar级联是用于通过在面部片段上叠加预定义的图案来检测(在这种情况下为面部的)特征的分类器, 并用作XML文件。在我们的模型中, 我们将使用面部, 眼睛和微笑级联, 下载后需要将其放置在工作目录中。
可以找到所有需要的Haar级联这里.
face_cascade = cv2.CascadeClassifier( 'haarcascade_frontalface_default.xml' )
eye_cascade = cv2.CascadeClassifier( 'haarcascade_eye.xml' )
smile_cascade = cv2.CascadeClassifier( 'haarcascade_smile.xml' )
步骤3:在这一步中,我们将构建执行微笑检测的主要功能。
来自网络摄像头/视频设备的实时提要逐帧处理。我们处理灰度图像, 因为级联效果更好。
要检测面部, 我们使用:
faces= face_cascade.detectMultiScale(gray, 1.3 , 5 )
其中1.3是缩放因子, 5是最近的邻居数。我们可以根据我们的便利/结果调整这些因素, 以改进检测器。
现在, 对于检测到的每个后续面孔, 我们需要检查笑容。
def detect(gray, frame):
faces = face_cascade.detectMultiScale(gray, 1.3 , 5 )
for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), ((x + w), (y + h)), ( 255 , 0 , 0 ), 2 )
roi_gray = gray[y:y + h, x:x + w]
roi_color = frame[y:y + h, x:x + w]
smiles = smile_cascade.detectMultiScale(roi_gray, 1.8 , 20 )for (sx, sy, sw, sh) in smiles:
cv2.rectangle(roi_color, (sx, sy), ((sx + sw), (sy + sh)), ( 0 , 0 , 255 ), 2 )
return frame
说明–
- 人脸数据存储为坐标元组。此处, x和y定义面部框架左上角的坐标, w和h定义框架的宽度和高度。
- 的cv2.rectangle函数接受参数框, 脸部的左上角坐标, 右下角的坐标, 矩形的RGB代码(其中将包含检测到的脸部)以及矩形的厚度。
- 的roi_gray定义面部的兴趣区域, 并roi_color对原始框架执行相同的操作。
- 在第7行中, 我们使用级联应用微笑检测。
video_capture = cv2.VideoCapture( 0 )
while True :
# Captures video_capture frame by frame
_, frame = video_capture.read() # To capture image in monochrome
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)# calls the detect() function
canvas = detect(gray, frame)# Displays the result on camera feed
cv2.imshow( 'Video' , canvas) # The control breaks once q key is pressed
if cv2.waitKey( 1 ) &
0xff = = ord ( 'q' ):
break# Release the capture once all the processing is done.
video_capture.release()
cv2.destroyAllWindows()
【Python使用OpenCV进行微笑检测示例】输出如下:
文章图片
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。
推荐阅读
- Python使用.kv文件的滑块小部件
- Python根据元素的长度对列表进行排序
- Python Kivy中的微调小部件用法示例
- 开源demo| 你画我猜——让你的生活更有趣
- sysbench压测Oracle(安装与使用示例)
- Python轻松制作一个ssh登录器
- #私藏项目实操分享# 一个常见鸿蒙应用的基础知识
- Numpy 数组(连接展平和添加维度)
- UML类图 #yyds干货盘点#