Day15 情緒辨識


🟡 先看看程式的效果

今天的程式是一個即時情緒偵測系統,能夠透過電腦的攝影機即時捕捉使用者的臉部表情,並利用人工智慧技術分析當前的情緒狀態。這個系統結合了電腦視覺和深度學習技術,讓電腦能夠「讀懂」人類的情緒。

Today’s program is a real-time emotion detection system that can capture users’ facial expressions through a computer’s camera and analyze the current emotional state using artificial intelligence technology. This system combines computer vision and deep learning techniques, enabling computers to “understand” human emotions.


🟡 學習目標

使用 OpenCV 進行影像擷取和處理。
採用 DeepFace 深度學習框架進行情緒分析。

DeepFace 支援的情緒類型:
– 厭惡(Disgust)
– 開心(Happy)
– 傷心(Sad)
– 生氣(Angry)
– 中性(Neutral)
– 害怕(Fear)
– 驚訝(Surprise)

應用場景:
– 娛樂應用:互動遊戲開發
– 教育領域:協助了解學生的學習情緒
– 心理研究:輔助情緒分析研究
– 人機互動:提升使用者體驗


🟡 程式碼

請先下載 “情緒識別.py”
請按此下載

'''

Python + AI in 21 days
https://jasonworkshop.com/python

Designed by Jason Workshop

[請勿修改以上內容]

---

預備工作:

首先,請確保已安裝 opencv-python, deepface 模組
如不確定可直接在 Windows 的 cmd prompt 執行以下指定
pip install opencv-python deepface

'''

import cv2
import numpy as np
from deepface import DeepFace

def emotion_detector():
    # 開啟攝影機
    cap = cv2.VideoCapture(0)
    
    while True:
        # 讀取影像
        ret, frame = cap.read()
        if not ret:
            break
            
        try:
            # 使用 DeepFace 分析情緒
            result = DeepFace.analyze(frame, 
                                    actions=['emotion'],
                                    enforce_detection=False)
            
            # 獲取主要情緒
            emotion = result[0]['dominant_emotion']
            
            # 在影像上顯示情緒
            cv2.putText(frame, 
                       f'Emotion: {emotion}',
                       (50, 50),
                       cv2.FONT_HERSHEY_SIMPLEX,
                       1,
                       (0, 255, 0),
                       2)
            
        except Exception as e:
            print(f"Error: {str(e)}")
            
        # 顯示影像
        cv2.imshow('Emotion Detection', frame)
        
        # 按 'q' 離開
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    
    # 釋放資源
    cap.release()
    cv2.destroyAllWindows()

if __name__ == "__main__":
    emotion_detector()

🟡 小小挑戰一下

大家可以嘗試進行一些修改或改良喔! 例如:
✌️在畫面上顯示所有偵測到的情緒數值, 而不是只顯示主要情緒。
✌️為不同的情緒使用不同的顯示顏色

😁 明天見!

按這裏回到 Python + AI 的 21 天挑戰