CV:基于keras利用cv2自带两步检测法对《跑男第六季第五期》之如花片段(或调用摄像头)进行实时脸部表情检测

简介: CV:基于keras利用cv2自带两步检测法对《跑男第六季第五期》之如花片段(或调用摄像头)进行实时脸部表情检测

输出结果

image.png


设计思路

image.png



核心代码

、#CV:基于keras利用cv2自带两步检测法对《跑男第六季第五期》"如花片段"(或调用摄像头)进行实时脸部表情检测——Jason Niu

import cv2

from keras.models import load_model

import numpy as np

detection_model_path = '../trained_models/detection_models/haarcascade_frontalface_default.xml'

emotion_model_path = '../trained_models/emotion_models/fer2013_mini_XCEPTION.102-0.66.hdf5'

emotion_labels = get_labels('fer2013')

frame_window = 10  

emotion_offsets = (20, 40)

face_detection = load_detection_model(detection_model_path)

emotion_classifier = load_model(emotion_model_path, compile=False)

emotion_target_size = emotion_classifier.input_shape[1:3]

emotion_window = []

cv2.namedWindow('window_frame,by Jason Niu') #摄像头窗口名称

# video_capture = cv2.VideoCapture(0) #函数定义摄像头对象,其参数0表示第一个摄像头,一般就是笔记本的内建摄像头。

video_capture = cv2.VideoCapture("F:\File_Python\Python_example\YOLOv3_use_TF\RunMan5.mp4")

while True:

   bgr_image = video_capture.read()[1]

   gray_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2GRAY)

   rgb_image = cv2.cvtColor(bgr_image, cv2.COLOR_BGR2RGB)

   faces = detect_faces(face_detection, gray_image)

   for face_coordinates in faces:  

       x1, x2, y1, y2 = apply_offsets(face_coordinates, emotion_offsets)

       gray_face = gray_image[y1:y2, x1:x2]  #[坐标参数,尺寸参数]

       try:

           gray_face = cv2.resize(gray_face, (emotion_target_size))

       except:

           continue

       gray_face = preprocess_input(gray_face, True)

       gray_face = np.expand_dims(gray_face, 0)

       gray_face = np.expand_dims(gray_face, -1)

       emotion_prediction = emotion_classifier.predict(gray_face)

       emotion_probability = np.max(emotion_prediction)

       emotion_label_arg = np.argmax(emotion_prediction)

       emotion_text = emotion_labels[emotion_label_arg]  

       emotion_window.append(emotion_text)            

       if len(emotion_window) > frame_window:

           emotion_window.pop(0)  

       try:

           emotion_mode = mode(emotion_window)

       except:

           continue

       #if条件根据不同表情显示不同颜色

       if emotion_text == 'angry':

           color = emotion_probability * np.asarray((255, 0, 0)) #红色

       elif emotion_text == 'sad':

           color = emotion_probability * np.asarray((0, 0, 255)) #蓝色

       elif emotion_text == 'happy':

           color = emotion_probability * np.asarray((255, 255, 0)) #黄色

       elif emotion_text == 'surprise':

           color = emotion_probability * np.asarray((0, 255, 255)) #青色

       else:

           color = emotion_probability * np.asarray((0, 255, 0))  #绿色

       color = color.astype(int)

       color = color.tolist()

       draw_bounding_box(face_coordinates, rgb_image, color)  

       draw_text(face_coordinates, rgb_image, emotion_mode,

                 color, 0, -45, 1, 4)                        

 

   bgr_image = cv2.cvtColor(rgb_image, cv2.COLOR_RGB2BGR)

   cv2.namedWindow("window_frame,by Jason Niu",0);

   cv2.resizeWindow("window_frame,by Jason Niu", 640, 380);

   cv2.imshow('window_frame,by Jason Niu', bgr_image)    

   if cv2.waitKey(1) & 0xFF == ord('q'):  

       break


相关文章
|
6月前
|
人工智能 搜索推荐
StableIdentity:可插入图像/视频/3D生成,单张图即可变成超人,可直接与ControlNet配合使用
【2月更文挑战第17天】StableIdentity:可插入图像/视频/3D生成,单张图即可变成超人,可直接与ControlNet配合使用
111 2
StableIdentity:可插入图像/视频/3D生成,单张图即可变成超人,可直接与ControlNet配合使用
|
6月前
|
计算机视觉
OpenCV(三十八):二维码检测
OpenCV(三十八):二维码检测
207 0
|
编解码 人工智能 算法
社区供稿 | AIGC图像分辨率太低?快来试试像素感知扩散超分模型,你想要的细节都在这里!
本文介绍了一种全新的基于SD生成先验的图像超分辨率和修复算法,在多个任务上都有着SOTA的表现。
|
6月前
|
存储 PyTorch 算法框架/工具
一体化模型图像去雨+图像去噪+图像去模糊(图像处理-图像复原-代码+部署运行教程)
一体化模型图像去雨+图像去噪+图像去模糊(图像处理-图像复原-代码+部署运行教程)
|
6月前
|
计算机视觉
CV项目肢体动作识别(三)内附完整代码和详细讲解
首先我还是给出完整的代码,然后再进行详细的讲解。这一次我们用模块化的思想,把一个功能模块化(moudle),这种思想在工程中非常常见,在分工中你需要做好自己的工作就可以,最后再调用这些模块。
|
6月前
|
人工智能 API 开发工具
【Python+百度API】实现人脸识别和颜值检测系统(包括人脸数量、年龄、颜值评分、性别、种族、表情检测)(超详细 附源码)
【Python+百度API】实现人脸识别和颜值检测系统(包括人脸数量、年龄、颜值评分、性别、种族、表情检测)(超详细 附源码)
325 0
|
机器学习/深度学习 编解码 算法
CV之NoGAN:利用图像增强技术(图片上色)实现对旧图像和电影片段进行着色和修复(爱因斯坦、鲁迅旧照/清末官员生活场景等案例)
CV之NoGAN:利用图像增强技术(图片上色)实现对旧图像和电影片段进行着色和修复(爱因斯坦、鲁迅旧照/清末官员生活场景等案例)
CV之NoGAN:利用图像增强技术(图片上色)实现对旧图像和电影片段进行着色和修复(爱因斯坦、鲁迅旧照/清末官员生活场景等案例)
|
存储 前端开发 Java
Demo:第二章:Java实现随机图像生成(人像,汽车,房屋等等
Demo:第二章:Java实现随机图像生成(人像,汽车,房屋等等
248 0
Demo:第二章:Java实现随机图像生成(人像,汽车,房屋等等
|
前端开发 小程序 算法
【微信小程序】基于百度大脑人体检测、人脸识别以及调用阿里垃圾分类识别小程序利用canvas完成人脸画图、分割手部部分图片算法
【微信小程序】基于百度大脑人体检测、人脸识别垃圾分类人体出现在镜头里用红色框将人脸圈出来、用黄色框将手部圈出来,定时器触发后,通过百度返回的top+、left+、width+、height+将拍照的截图用canvas画出来,最后保存上传到阿里云垃圾分类识别检测博主用的是手部关键点识别,手部截取包括手肘部分,当出现手肘没有手掌时会出现截取不到目标的问题,目前解决办法:定时器设置时间长一点供演示员做好调整,另外就是出现手掌,可以尽量把掌心打开方便识别这样手肘部分就不会被检测到了在截取的时候canvas用不了..
318 0
【微信小程序】基于百度大脑人体检测、人脸识别以及调用阿里垃圾分类识别小程序利用canvas完成人脸画图、分割手部部分图片算法
|
人工智能 计算机视觉
【人工智能】人脸识别检测戴口罩实战之初识OpenCV简单操作,图片的读取和显示以及BGR与RGB之间的转换【第一课】
初识OpenCV简单操作,图片的读取和显示以及BGR与RGB之间的转换,读取视频。解决报错iCCP: cHRM chunk does not match sRGB
535 1
【人工智能】人脸识别检测戴口罩实战之初识OpenCV简单操作,图片的读取和显示以及BGR与RGB之间的转换【第一课】