Je l'ai utilisé récemment, donc j'écrirai un peu. Puisqu'il s'agit de mon premier article, il peut y avoir de nombreuses erreurs et pièces manquantes. Je vous serais reconnaissant si vous pouviez bien m'apprendre: girl_tone1:
Azure Face avait une forte impression de reconnaissance faciale Je pensais que c'était intéressant de pouvoir reconnaître les émotions, alors je l'ai utilisé pour la reconnaissance des émotions.
Ce que vous pouvez faire: vérification du visage, détection du visage, reconnaissance des émotions Il semble qu'il existe d'autres moyens de rechercher des visages similaires et de regrouper par le même visage. Dans cet article, nous utiliserons la détection des visages et la reconnaissance des émotions.
Vous pouvez l'utiliser en écrivant ceci: ok_woman_tone1:
KEY = 'your_key'
ENDPOINT = 'your_endpoint'
face_client = FaceClient(ENDPOINT, CognitiveServicesCredentials(KEY))
params = ['age','emotion']
result = face_client.face.detect_with_stream(
image
, return_face_id=True
, return_face_landmarks=False
, return_face_attributes=params
)
Fondamentalement, j'ai changé uniquement return_face_attributes de False avec la valeur par défaut. image: Cette fois passe un flot d'images return_face_id: Si défini sur True, faceID sera retourné. return_face_landmarks: s'il est défini sur True, il sera renvoyé. Point de repère du visage return_face_attributes Renvoie les informations d'attribut passées dans le paramètre.
Cette fois, j'ai passé l'âge et l'émotion pour return_face_attributes Il renvoie l'âge et les sentiments de la cible.
Je veux pouvoir prendre une photo en appuyant sur un bouton de la caméra → reconnaissance des émotions → afficher le résultat…: upside_down: Je vais le faire en utilisant kivy.
[Emotion.py]
# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
Builder.load_string("""
<MainWidget>:
""")
class MainWidget(BoxLayout):
pass
class EmotionApp(App):
title = "E.A."
def build(self):
return MainWidget()
if __name__ == "__main__":
EmotionApp().run()
Écran ↓
Noir
[Emotion.py]
(Abréviation)
Builder.load_string("""
<MainWidget>:
orientation: 'vertical'
Camera:
id: camera
resolution: (640, 480)
play: True
Button:
text: 'Capture'
size_hint_y: None
height: '48dp'
on_press: root.capture()
""")
class MainWidget(BoxLayout):
def capture(self):
print('captured!')
(Abréviation)
↓ Écran (Puisqu'il a été traité très grossièrement pour que le visage et l'arrière-plan ne soient pas reflétés, c'est pour référence seulement ...)
[Emotion.py]
KEY = 'your_key'
ENDPOINT = 'your_endpoint'
face_client = FaceClient(ENDPOINT, CognitiveServicesCredentials(KEY))
(Abréviation)
def capture(self):
texture = self.ids['camera'].texture
nparr = np.fromstring(texture.pixels, dtype=np.uint8)
reshaped = np.reshape(nparr, (480,640,4))
ret,buf = cv2.imencode('.jpg', reshaped)
stream = io.BytesIO(buf)
params = ['age','emotion','hair']
result = face_client.face.detect_with_stream(
stream
, return_face_id=True
, return_face_landmarks=False
, return_face_attributes=params
)
(Abréviation)
[Emotion.py]
(Abréviation)
Layout = BoxLayout(orientation='vertical')
faceatts = result[0].face_attributes
Layout.add_widget(Label(text=("age: "+ str(int(faceatts.age)))))
Layout.add_widget(Label(text="emotion: "))
Layout.add_widget(Label(text="anger: " + str(faceatts.emotion.anger)))
Layout.add_widget(Label(text="contempt: " + str(faceatts.emotion.contempt)))
Layout.add_widget(Label(text="disgust: " + str(faceatts.emotion.disgust)))
Layout.add_widget(Label(text="fear: " + str(faceatts.emotion.fear)))
Layout.add_widget(Label(text="happiness: " + str(faceatts.emotion.happiness)))
Layout.add_widget(Label(text="neutral: " + str(faceatts.emotion.neutral)))
Layout.add_widget( Label(text="sadness: " + str(faceatts.emotion.sadness)))
Layout.add_widget(Label(text="surprise: " + str(faceatts.emotion.surprise)))
popupWindow = Popup(title="Results", content=Layout, size_hint=(None,None),size=(400,400))
popupWindow.open()
(Abréviation)
Je vais essayer de l'utiliser. Cliquez sur le bouton! Oh ~ Je pouvais dire que je riais correctement! Je rajeunis ... (rires): détendu: Finalement, j'ai voulu m'en tenir un peu plus au look et en savoir plus sur son fonctionnement: robot: Merci pour la lecture!
# -*- coding: utf-8 -*-
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
import cv2
import numpy as np
import io
from azure.cognitiveservices.vision.face import FaceClient
from msrest.authentication import CognitiveServicesCredentials
from kivy.uix.label import Label
from kivy.uix.popup import Popup
KEY = 'your_key'
ENDPOINT = 'your_end_point'
face_client = FaceClient(ENDPOINT, CognitiveServicesCredentials(KEY))
Builder.load_string("""
<MainWidget>:
orientation: 'vertical'
Camera:
id: camera
resolution: (640, 480)
play: True
Button:
text: 'Capture'
size_hint_y: None
height: '48dp'
on_press: root.capture()
""")
class MainWidget(BoxLayout):
def capture(self):
texture = self.ids['camera'].texture
nparr = np.fromstring(texture.pixels, dtype=np.uint8)
reshaped = np.reshape(nparr, (480,640,4))
ret,buf = cv2.imencode('.jpg', reshaped)
stream = io.BytesIO(buf)
params = ['age','emotion']
result = face_client.face.detect_with_stream(
stream
, return_face_id=True
, return_face_landmarks=False
, return_face_attributes=params
)
Layout = BoxLayout(orientation='vertical')
faceatts = result[0].face_attributes
Layout.add_widget(Label(text=("age: "+ str(int(faceatts.age)))))
Layout.add_widget(Label(text="emotion: "))
Layout.add_widget(Label(text="anger: " + str(faceatts.emotion.anger)))
Layout.add_widget(Label(text="contempt: " + str(faceatts.emotion.contempt)))
Layout.add_widget(Label(text="disgust: " + str(faceatts.emotion.disgust)))
Layout.add_widget(Label(text="fear: " + str(faceatts.emotion.fear)))
Layout.add_widget(Label(text="happiness: " + str(faceatts.emotion.happiness)))
Layout.add_widget(Label(text="neutral: " + str(faceatts.emotion.neutral)))
Layout.add_widget( Label(text="sadness: " + str(faceatts.emotion.sadness)))
Layout.add_widget(Label(text="surprise: " + str(faceatts.emotion.surprise)))
popupWindow = Popup(title="Results", content=Layout, size_hint=(None,None),size=(400,400))
popupWindow.open()
class EmotionApp(App):
title = "E.A."
def build(self):
return MainWidget()
if __name__ == "__main__":
EmotionApp().run()
Recommended Posts