[PYTHON] Ich habe versucht, die Gesichtserkennungs-API von Microsoft für Cognitive Services zu verwenden

Ich habe versucht, die Gesichtserkennungs-API von Microsoft für Cognitive Services zu verwenden

___ Hinweis: Die Verwendung der API hat sich erheblich geändert, daher schreibe ich den Artikel jetzt neu. ___

Blog-Promotion: http://jotarout.hatenablog.com/

Ist dein Gesicht ein Fenster deines Herzens?

Wenn Sie den Gesichtsausdruck einer Person kennen, können Sie möglicherweise die physiologischen und inneren Bedingungen der Person abschätzen. Lassen Sie uns die Gesichtsausdrücke aller mithilfe eines Computers erkennen.

Verwenden Sie Microsoft Facial Recognition API.

Nachdem Sie sich von der oben genannten Site registriert und den API-Schlüssel erhalten haben, speichern Sie ihn in api_key.txt im selben Verzeichnis wie der __source-Code. __ __

Dies ist der Code. Haben Sie den API-Schlüssel und Ihr Lieblingsbild im selben Verzeichnis. Schreiben Sie vorerst einen Code wie das Ziehen einer Benutzeroberfläche, die 5 Emotionen und Ebenen neben dem Ausdruck anzeigt.

ms_emotion.py


# Calling Emotion APIs is
# restricted to 20 transactions per minute
# and 30,000 transactions per month.
# 20 transactions per 60 seconds
# 1 transaction per 3 seconds

import httplib
import urllib
import base64
import os
import sys
import cv2
import numpy as np
import json
import math

def get_emotion(file_path, headers):
    try:
        conn = httplib.HTTPSConnection('api.projectoxford.ai')
        conn.request("POST", "/emotion/v1.0/recognize?",
                     open(file_path, 'rb'), headers)
        response = conn.getresponse()
        data = response.read()
        conn.close()
        return data
    except Exception as e:
        print("[Errno {0}] {1}".format(e.errno, e.strerror))
        print(e.message)

def display_expression(data,img):
    font = cv2.FONT_HERSHEY_PLAIN
    text = "test cyber"
    font_size = 1
    data = json.loads(data)
    for face in data:
        f_rec  =  face['faceRectangle']
        width  =  f_rec['width']
        height =  f_rec['height']
        left   =  f_rec['left']
        top    =  f_rec['top']
        f_rec  =  face['scores']
        f_rec = sorted(f_rec.items(), key=lambda x:x[1],reverse = True)
        cv2.rectangle(img,(left,top),(left+width,top+height),(130,130,130),2)
        cv2.rectangle(img,(left+width,top),(left+width+150,top+50),(130,130,130),-1)

        for i in range(0,5):
            val = round(f_rec[i][1],3)
            emo = f_rec[i][0]
            cv2.rectangle(img,(left+width,top+10*i),(left+width+int(val*150),top+10*(i+1)),(180,180,180),-1)
            cv2.putText(img, emo+" "+str(val),(left+width,top+10*(i+1)),font, font_size,(255,255,255),1)

if __name__ == '__main__':
    if len(sys.argv) != 2:
        print 'Usage: # python %s /path/to/image' % sys.argv[0]
        quit()

    with open('api_key.txt', 'r') as f:
        key = f.read().rstrip('\n')
    f.close()
    headers = {
        'Content-Type': 'application/octet-stream',
        'Ocp-Apim-Subscription-Key': key,
    }

    data = get_emotion(sys.argv[1], headers)
    img = cv2.imread(sys.argv[1],-1)

    display_expression(data,img)

    cv2.imshow('image',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

Es kann mit python ms_emotion.py your_image.png ausgeführt werden.

20160517002308.png スクリーンショット 2016-05-25 21.06.06.png スクリーンショット 2016-05-25 21.08.03.png

Screenshot from 2016-08-21 02-58-00.png

Ich denke, die Genauigkeit ist ziemlich gut (ich kann nicht sehr viel ein kleines Gesicht bekommen). Es gibt ungefähr 10 Arten von Gesichtsausdrücken, so dass es Spaß machen wird, mit ihnen herumzuspielen.

Es scheint, dass es auch für die Bewegtbildanalyse verwendet werden kann! Solange die API erlaubt ...

Recommended Posts

Ich habe versucht, die Gesichtserkennungs-API von Microsoft für Cognitive Services zu verwenden
Gesichtserkennung mit Peppers API
Ich habe versucht, das Gesicht mit Face ++ zu erkennen
Ich habe versucht, die checkio-API zu verwenden
Ich habe versucht, die Docomo-Spracherkennungs-API und die Google Speech-API in Java zu verwenden
Ich habe versucht, YOUTUBE Data API V3 zu verwenden
Ich habe versucht, die UnityCloudBuild-API von Python zu verwenden
Ich habe versucht, die BigQuery-Speicher-API zu verwenden
Ich habe versucht, die Sprecheridentifikation mithilfe der Sprechererkennungs-API von Azure Cognitive Services mit Python zu überprüfen. # 1
Ich habe versucht, die Sprecheridentifikation mithilfe der Sprechererkennungs-API von Azure Cognitive Services in Python zu überprüfen. # 2
Ich habe versucht, Remote API mit GAE / J zu verwenden
Ich habe versucht, die Google Cloud Vision-API zu verwenden
Als ich versuchte, die Computer Vision API von Microsoft zu verwenden, erkannte ich das Galapagos-Zeichen "Stop".
Ich habe versucht, parametrisiert zu verwenden
Ich habe versucht, Argparse zu verwenden
Ich habe versucht, Mimesis zu verwenden
Ich habe versucht, anytree zu verwenden
Ich habe versucht, aiomysql zu verwenden
Ich habe versucht, Summpy zu verwenden
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, ESPCN zu verwenden
Ich habe versucht, openpyxl zu verwenden
Ich habe versucht, Ipython zu verwenden
Ich habe versucht, PyCaret zu verwenden
Ich habe versucht, Cron zu verwenden
Ich habe versucht, ngrok zu verwenden
Ich habe versucht, face_recognition zu verwenden
Ich habe versucht, Jupyter zu verwenden
Ich habe versucht, doctest zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, jinja2 zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, das Zeitfenster zu verwenden
Ich habe APN (Remote-Benachrichtigung) mithilfe der Parse.com-REST-API ausprobiert
Ich habe versucht, die API von Sakenowa Data Project zu verwenden
Ich habe versucht, Videos mit der Youtube Data API (Anfänger) zu suchen.
Expressionsnachweis mit Yolov5
[Ich habe versucht, Pythonista 3 zu verwenden] Einführung
Alterserkennung mit Peppers API
Ich habe versucht, easydict (Memo) zu verwenden.
Ich habe versucht, RandomForest zu verwenden
Ich habe versucht, das Lachproblem mit Keras zu erkennen.
Ich habe versucht, BigQuery ML zu verwenden
Ich habe versucht, Amazon Glacier zu verwenden
Ich habe versucht, Git Inspector zu verwenden
[Python] Ich habe versucht, Daten mit der API von Wikipedia zu sammeln
Ich habe versucht, Magenta / TensorFlow zu verwenden
Ich habe versucht, die handschriftliche Zeichenerkennung von Runenzeichen mit CNN mithilfe von Keras zu erkennen
Ich habe versucht, AWS Chalice zu verwenden
[Für Anfänger] Ich habe versucht, die Tensorflow-Objekterkennungs-API zu verwenden
Ich habe versucht, Slack Emojinator zu verwenden
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen