Python使用OpenCV进行微笑检测示例

情感检测器用于许多行业, 其中一个是媒体行业, 对于公司来说, 确定公众对其产品的反应非常重要。在本文中, 我们将使用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行中, 我们使用级联应用微笑检测。
步骤4:我们在这个步骤中定义main函数。执行后,按“q”键即可终止功能。
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使用OpenCV进行微笑检测示例

文章图片
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。

    推荐阅读