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


相关文章
|
2月前
|
人工智能 搜索推荐
StableIdentity:可插入图像/视频/3D生成,单张图即可变成超人,可直接与ControlNet配合使用
【2月更文挑战第17天】StableIdentity:可插入图像/视频/3D生成,单张图即可变成超人,可直接与ControlNet配合使用
23 2
StableIdentity:可插入图像/视频/3D生成,单张图即可变成超人,可直接与ControlNet配合使用
|
3月前
|
Shell Linux 计算机视觉
【Dlib】动作检测:以常见的人脸识别验证为例讲解张嘴与闭眼
【Dlib】动作检测:以常见的人脸识别验证为例讲解张嘴与闭眼
65 0
|
6月前
|
编解码 人工智能 算法
社区供稿 | AIGC图像分辨率太低?快来试试像素感知扩散超分模型,你想要的细节都在这里!
本文介绍了一种全新的基于SD生成先验的图像超分辨率和修复算法,在多个任务上都有着SOTA的表现。
|
3月前
|
监控 算法 Serverless
OpenCV这么简单为啥不学——1.12、使用ssim函数对两张照片进行相似度分析
OpenCV这么简单为啥不学——1.12、使用ssim函数对两张照片进行相似度分析
50 0
|
5月前
|
计算机视觉
CV项目肢体动作识别(三)内附完整代码和详细讲解
首先我还是给出完整的代码,然后再进行详细的讲解。这一次我们用模块化的思想,把一个功能模块化(moudle),这种思想在工程中非常常见,在分工中你需要做好自己的工作就可以,最后再调用这些模块。
|
5月前
|
人工智能 API 开发工具
【Python+百度API】实现人脸识别和颜值检测系统(包括人脸数量、年龄、颜值评分、性别、种族、表情检测)(超详细 附源码)
【Python+百度API】实现人脸识别和颜值检测系统(包括人脸数量、年龄、颜值评分、性别、种族、表情检测)(超详细 附源码)
128 0
|
5月前
复现sci顶刊中的画中画(局部细节放大)
复现sci顶刊中的画中画(局部细节放大)
127 0
|
7月前
|
计算机视觉 C++
OpenCV-用图像处理作出素描图(给你的另一半试试吧)
OpenCV-用图像处理作出素描图(给你的另一半试试吧)
|
12月前
|
人工智能 数据可视化 测试技术
卷!用扩散模型合成连贯视觉故事,输入字幕就能脑补画面,代词ta都分得清
卷!用扩散模型合成连贯视觉故事,输入字幕就能脑补画面,代词ta都分得清
140 0
|
机器学习/深度学习 编解码 算法
CV之NoGAN:利用图像增强技术(图片上色)实现对旧图像和电影片段进行着色和修复(爱因斯坦、鲁迅旧照/清末官员生活场景等案例)
CV之NoGAN:利用图像增强技术(图片上色)实现对旧图像和电影片段进行着色和修复(爱因斯坦、鲁迅旧照/清末官员生活场景等案例)
CV之NoGAN:利用图像增强技术(图片上色)实现对旧图像和电影片段进行着色和修复(爱因斯坦、鲁迅旧照/清末官员生活场景等案例)