{"id":5442,"date":"2018-10-25T19:38:06","date_gmt":"2018-10-25T17:38:06","guid":{"rendered":"https:\/\/blog.generationrobots.com\/?p=5442"},"modified":"2023-03-29T10:37:53","modified_gmt":"2023-03-29T08:37:53","slug":"cozmo-sdk-detection-et-reconnaissance-faciale","status":"publish","type":"post","link":"https:\/\/www.generationrobots.com\/blog\/fr\/cozmo-sdk-detection-et-reconnaissance-faciale\/","title":{"rendered":"Cozmo SDK : d\u00e9tection et reconnaissance faciale"},"content":{"rendered":"\n<html>\n <body>\n  <p>\n   Nous poursuivons la d\u00e9couverte du SDK Cozmo avec la d\u00e9tection de visages et d&rsquo;\u00e9motions, ainsi que la reconnaissance embarqu\u00e9e sur le robot Cozmo.\n  <\/p>\n  \n  \n  <p>\n   Cozmo dispose du hardware et software n\u00e9cessaire \u00e0 la reconnaissance des visages. Il est capable d&rsquo;associer un nom \u00e0 chaque visage (\n   <em>\n    enrollment\n   <\/em>\n   ), mais aussi de percevoir les \u00e9motions sur les visages d\u00e9tect\u00e9s. Cozmo peut \u00e9galement suivre la position d&rsquo;un visage.\n  <\/p>\n  \n  \n  <p>\n   Dans ce TP, vous allez apprendre \u00e0 utiliser les 4 fonctionnalit\u00e9s suivantes :\n  <\/p>\n  \n  \n  <ol class=\"wp-block-list\">\n   \n   <li>\n    D\u00e9tection des visages\n   <\/li>\n   \n   \n   <li>\n    Enregistrement de visages\n   <\/li>\n   \n   \n   <li>\n    Reconnaissance de visages\n   <\/li>\n   \n   \n   <li>\n    Reconnaissance d&rsquo;\u00e9motion\n   <\/li>\n   \n  <\/ol>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-objectif-detecter-et-reconnaitre-les-visages-et-les-emotions\">\n   <strong>\n    Objectif : d\u00e9tecter et reconna\u00eetre les visages et les \u00e9motions\n   <\/strong>\n  <\/h2>\n  \n  \n  <ul class=\"wp-block-list\">\n   \n   <li>\n    <strong>\n     <span style=\"color: #00ccff;\">\n      Dur\u00e9e :\n     <\/span>\n     45 minutes\n    <\/strong>\n   <\/li>\n   \n   \n   <li>\n    <strong>\n     <span style=\"color: #00ccff;\">\n      Niveau de difficult\u00e9 :\n     <\/span>\n     interm\u00e9diaire\n    <\/strong>\n   <\/li>\n   \n   \n   <li>\n    <strong>\n     <span style=\"color: #00ccff;\">\n      Comp\u00e9tence acquises :\n     <\/span>\n     vision et reconnaissance de visages\n    <\/strong>\n   <\/li>\n   \n  <\/ul>\n  \n  \n  <h3 class=\"wp-block-heading\" id=\"h-les-prerequis\">\n   <strong>\n    Les pr\u00e9requis\n   <\/strong>\n  <\/h3>\n  \n  \n  <p>\n   Vous devez avoir acquis les notions abord\u00e9es dans les tutoriels ci-dessous\n  <\/p>\n  \n  \n  <ul class=\"wp-block-list\">\n   \n   <li>\n    Cozmo SDK : cozmo.world et \u00e9v\u00e9nements\n   <\/li>\n   \n   \n   <li>\n    <a class=\"catalogue\" href=\"\/blog\/fr\/comment-activer-le-mode-sdk-de-cozmo\/\" title=\"Cozmo SDK : comment activer le mode SDK de Cozmo\">\n     Cozmo SDK : comment activer le mode SDK de Cozmo\n    <\/a>\n   <\/li>\n   \n  <\/ul>\n  \n  \n  <h3 class=\"wp-block-heading\" id=\"h-les-nouvelles-notions-que-vous-allez-aborder-dans-ce-tp\">\n   Les nouvelles notions que vous allez aborder dans ce TP\n  <\/h3>\n  \n  \n  <ul class=\"wp-block-list\">\n   \n   <li>\n    La fonction\n    <em>\n     cozmo.faces\n    <\/em>\n   <\/li>\n   \n   \n   <li>\n    La fonction\n    <em>\n     cozmo.robot.Robot.enable_facial_expression_estimation\n    <\/em>\n   <\/li>\n   \n  <\/ul>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-fonction-1-detection-des-visages-avec-cozmo\">\n   Fonction 1 : d\u00e9tection des visages avec Cozmo\n  <\/h2>\n  \n  \n  <p>\n   Le robot Cozmo embarque dans son SDK le n\u00e9cessaire pour d\u00e9tecter des visages gr\u00e2ce \u00e0 sa cam\u00e9ra.\n  <\/p>\n  \n  \n  <p>\n   Lorsqu&rsquo;une personne passe devant la cam\u00e9ra de Cozmo, le SDK d\u00e9clenche des \u00e9v\u00e9nements qui retournent des informations sur le visage d\u00e9tect\u00e9 ou sur un visage qui n&rsquo;est plus visible.\n  <\/p>\n  \n  \n  <p>\n   Les \u00e9v\u00e9nements en question sont :\n  <\/p>\n  \n  \n  <ul class=\"wp-block-list\">\n   \n   <li>\n    <strong>\n     <em>\n      EvtFaceAppeared\n     <\/em>\n    <\/strong>\n    : d\u00e9clench\u00e9 lorsqu&rsquo;un visage est d\u00e9tect\u00e9 pour la premi\u00e8re fois\n   <\/li>\n   \n   \n   <li>\n    <em>\n     <strong>\n      EvtFaceObserved\n     <\/strong>\n    <\/em>\n    : d\u00e9clench\u00e9 continuellement lorsqu&rsquo;un visage est d\u00e9tect\u00e9\n   <\/li>\n   \n   \n   <li>\n    <strong>\n     <em>\n      EvtFaceDisappeared\n     <\/em>\n    <\/strong>\n    : d\u00e9clench\u00e9 lorsqu&rsquo;un visage pr\u00e9c\u00e9demment observ\u00e9 n&rsquo;est plus visible\n   <\/li>\n   \n  <\/ul>\n  \n  \n  <p>\n   Comme nous l&rsquo;avons expliqu\u00e9 dans le tutoriel\u00a0Cozmo SDK : cozmo.world et \u00e9v\u00e9nements, presque tous les \u00e9v\u00e9nements \u00e9mis par le robot peuvent \u00eatre r\u00e9cup\u00e9r\u00e9s par l&rsquo;objet\n   <code class=\"xref py py-class docutils literal notranslate\">\n    <span class=\"pre\">\n     <a class=\"reference internal\" href=\"http:\/\/cozmosdk.anki.com\/docs\/generated\/cozmo.world.html#cozmo.world.World\" title=\"cozmo.world.World\">\n      World\n     <\/a>\n    <\/span>\n   <\/code>\n   . Cet objet\n   <em>\n    World\n   <\/em>\n   est accessible via l&rsquo;instance disponible sur le robot auquel vous \u00eates connect\u00e9\n   <code class=\"xref py py-attr docutils literal notranslate\">\n    <span class=\"pre\">\n     <a class=\"reference internal\" href=\"http:\/\/cozmosdk.anki.com\/docs\/generated\/cozmo.robot.html#cozmo.robot.Robot.world\" title=\"cozmo.robot.Robot.world\">\n      cozmo.robot.Robot.world\n     <\/a>\n    <\/span>\n   <\/code>\n   .\n  <\/p>\n  \n  \n  <p>\n   Pour d\u00e9tecter un de ces \u00e9v\u00e9nements vous pouvez utilise la fonction\n   <a class=\"reference internal\" href=\"http:\/\/cozmosdk.anki.com\/docs\/generated\/cozmo.event.html#cozmo.event.Dispatcher.wait_for\" title=\"cozmo.event.Dispatcher.wait_for\">\n    <code class=\"xref py py-meth docutils literal notranslate\">\n     <span class=\"pre\">\n      wait_for()\n     <\/span>\n    <\/code>\n   <\/a>\n   sur l&rsquo;objet\n   <em>\n    World\n   <\/em>\n   .\n  <\/p>\n  \n  <div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <\/div> <pre class=\"language-python code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-python code-embed-code\">robot.world.wait_for(cozmo.faces.EvtFaceObserved)<\/code><\/pre> <\/div><\/div>\n\n  \n  <p>\n   Chaque visage d\u00e9tect\u00e9 se voit attribuer un objet de type\n   <code class=\"xref py py-class docutils literal notranslate\">\n    <span class=\"pre\">\n     <a class=\"reference internal\" href=\"http:\/\/cozmosdk.anki.com\/docs\/generated\/cozmo.faces.html#cozmo.faces.Face\" title=\"cozmo.world.World\">\n      cozmo.robot.Face\n     <\/a>\n    <\/span>\n   <\/code>\n   qui contient plusieurs informations et fonctions. Cet objet d\u00e9clenche des \u00e9v\u00e9nements tels que le renouvellement de l&rsquo;ID, le changement de nom, etc.\n  <\/p>\n  \n  \n  <p>\n   Ici, la fonction\n   <code class=\"docutils literal notranslate\">\n    <span class=\"pre\">\n     wait_for\n    <\/span>\n   <\/code>\n   retourne une instance de la classe\n   <a href=\"http:\/\/cozmosdk.anki.com\/docs\/generated\/cozmo.faces.html#cozmo.faces.EvtFaceObserved\">\n    <code class=\"xref py py-class docutils literal notranslate\">\n     <span class=\"pre\">\n      EvtFaceObserved\n     <\/span>\n    <\/code>\n   <\/a>\n   , qui contient un attribut\n   <a class=\"reference internal\" href=\"http:\/\/cozmosdk.anki.com\/docs\/generated\/cozmo.faces.html#cozmo.faces.EvtFaceObserved.face\" title=\"cozmo.objects.EvtObjectTapped.obj\">\n    <code class=\"xref py py-attr docutils literal notranslate\">\n     <span class=\"pre\">\n      face\n     <\/span>\n    <\/code>\n   <\/a>\n   .\n  <\/p>\n  \n  \n  <p>\n   Vous trouverez ci-dessous un exemple simple qui r\u00e9cup\u00e8re l&rsquo;\u00e9v\u00e9nement\n   <em>\n    EvtFaceObserved\n   <\/em>\n   (\u00e9v\u00e9nement d\u00e9clench\u00e9 continuellement lorsqu&rsquo;un visage est d\u00e9tect\u00e9), qui est capt\u00e9 par\n   <a class=\"reference internal\" href=\"http:\/\/cozmosdk.anki.com\/docs\/generated\/cozmo.world.html#cozmo.world.World\" title=\"cozmo.world.World\">\n    <code class=\"xref py py-class docutils literal notranslate\">\n     <span class=\"pre\">\n      cozmo.world.World\n     <\/span>\n    <\/code>\n   <\/a>\n   et qui retourne une instance disposant de l&rsquo;attribut de type\n   <em>\n    Face\n   <\/em>\n   et affiche l&rsquo;\n   <em>\n    id face_id\n   <\/em>\n   assign\u00e9 par Cozmo pour le visage reconnu :\n  <\/p>\n  \n  <div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">R\u00e9cup\u00e9rer l&#039;id du visage reconnu<\/span> <\/div> <pre class=\"language-python code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-python code-embed-code\">#!\/usr\/bin\/env python3<br\/><br\/>import cozmo<br\/>import asyncio<br\/><br\/>def main_program(robot: cozmo.robot.Robot):<br\/>  try:<br\/>  \te = robot.world.wait_for(cozmo.faces.EvtFaceObserved)<br\/>  \tprint(&quot;Face id = &quot;   str(e.face.face_id))<br\/><br\/>  except asyncio.TimeoutError:<br\/>    print(&quot;Timeout \u00e9coul\u00e9&quot;)<br\/><br\/>cozmo.run_program(main_program, use_viewer=True)<\/code><\/pre> <\/div><\/div>\n\n  \n  <h2 class=\"wp-block-heading\" id=\"h-fonction-2-enregistrement-de-visages\">\n   Fonction 2 : enregistrement de visages\n  <\/h2>\n  \n  \n  <p>\n   Le robot Cozmo embarque \u00e9galement dans son SDK le n\u00e9cessaire pour enregistrer des visages en associant un nom \u00e0 chaque visage. Il s&rsquo;agit de l&rsquo;\n   <em>\n    enrollment\n   <\/em>\n   .\n  <\/p>\n  \n  \n  <p>\n   L&rsquo;objet\n   <code class=\"xref py py-class docutils literal notranslate\">\n    <span class=\"pre\">\n     <a class=\"reference internal\" href=\"http:\/\/cozmosdk.anki.com\/docs\/generated\/cozmo.faces.html#cozmo.faces.Face\" title=\"cozmo.world.World\">\n      cozmo.robot.Face\n     <\/a>\n    <\/span>\n   <\/code>\n   dispose de fonctions pour enregistrer, modifier et supprimer un nom associ\u00e9 \u00e0 un visage.\n  <\/p>\n  \n  \n  <ul class=\"wp-block-list\">\n   \n   <li>\n    <strong>\n     <em>\n      name_face(name)\n     <\/em>\n    <\/strong>\n   <\/li>\n   \n   \n   <li>\n    <strong>\n     <em>\n      rename_face(new_name)\n     <\/em>\n    <\/strong>\n   <\/li>\n   \n   \n   <li>\n    <strong>\n     <em>\n      erase_enrolled_face()\n     <\/em>\n    <\/strong>\n   <\/li>\n   \n  <\/ul>\n  \n  \n  <p>\n   Les deux premi\u00e8res fonctions prennent une cha\u00eene de caract\u00e8re (string) comme param\u00e8tre.\u00a0La cha\u00eene doit \u00eatre une string non vide de caract\u00e8res ASCII string et compos\u00e9e de caract\u00e8res alphab\u00e9tiques uniquement (pas d&rsquo;espace ni d&rsquo;accents&#8230;).\n  <\/p>\n  \n  \n  <p>\n   Nous allons ajouter la deuxi\u00e8me fonction (\n   <em>\n    rename_face)\n   <\/em>\n   au code de l&rsquo;exemple pr\u00e9c\u00e9dent. Ci-dessous, un nom a \u00e9t\u00e9 associ\u00e9 au visage reconnu de mani\u00e8re arbitraire : \u00ab\u00a0Marc\u00a0\u00bb.\n  <\/p>\n  \n  <div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">Assigner un nom \u00e0 un visage<\/span> <\/div> <pre class=\"language-python code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-python code-embed-code\">#!\/usr\/bin\/env python3<br\/><br\/>import cozmo<br\/>import asyncio<br\/><br\/>def main_program(robot: cozmo.robot.Robot):<br\/>  try:<br\/>  \te = robot.world.wait_for(cozmo.faces.EvtFaceObserved)<br\/>  \te.face.rename_face(&quot;humain&quot;)<br\/><br\/>  except asyncio.TimeoutError:<br\/>    print(&quot;Timeout \u00e9coul\u00e9&quot;)<br\/><br\/>cozmo.run_program(main_program, use_viewer=True)<\/code><\/pre> <\/div><\/div>\n\n  \n  <p>\n   Dans l&rsquo;exemple suivant, Cozmo voit un visage qu&rsquo;il conna\u00eet (s&rsquo;il y en a un) et dit \u00e0 voix haute le nom qui y est associ\u00e9. Consultez notre TP\n   <a class=\"catalogue\" href=\"\/blog\/fr\/cozmo-sdk-faire-parler-cozmo\/\" title=\"Cozmo SDK : faire parler Cozmo\">\n    Cozmo SDK : faire parler Cozmo\n   <\/a>\n   si vous avez besoin de conseils pour la gestion de la parole avec Cozmo SDK.\n  <\/p>\n  \n  <div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <span class=\"code-embed-name\">Prononcer le nom associ\u00e9 \u00e0 un visage<\/span> <\/div> <pre class=\"language-python code-embed-pre line-numbers\"  data-start=\"1\" data-line-offset=\"0\"><code class=\"language-python code-embed-code\">#!\/usr\/bin\/env python3<br\/><br\/>import cozmo<br\/>import asyncio<br\/><br\/>def main_program(robot: cozmo.robot.Robot):<br\/>  try:<br\/>  \te = robot.world.wait_for(cozmo.faces.EvtFaceObserved)<br\/>  \trobot.say_text(&quot;Bonjour&quot;   e.face.name).wait_for_completed()<br\/><br\/>  except asyncio.TimeoutError:<br\/>    print(&quot;Timeout \u00e9coul\u00e9&quot;)<br\/><br\/>cozmo.run_program(main_program, use_viewer=True)<\/code><\/pre> <\/div><\/div>\n\n  \n  <p>\n   Attention, si le nom associ\u00e9 \u00e0 un visage est modifi\u00e9 ou supprim\u00e9, cela va d\u00e9clencher des \u00e9v\u00e9nements.\u00a0Ces \u00e9v\u00e9nements sont :\n  <\/p>\n  \n  \n  <ul class=\"wp-block-list\">\n   \n   <li>\n    <em>\n     <strong>\n      EvtErasedEnrolledFace\n     <\/strong>\n    <\/em>\n    : d\u00e9clench\u00e9 lorsque un enregistrement est supprim\u00e9 de la base de visages\n   <\/li>\n   \n   \n   <li>\n    <em>\n     <strong>\n      EvtFaceRenamed\n     <\/strong>\n    <\/em>\n    : d\u00e9clench\u00e9 lorsque un enregistrement est modifi\u00e9 dans la base\n   <\/li>\n   \n  <\/ul>\n  \n  \n  <p>\n   Nous aurons l&rsquo;occasion d&rsquo;y revenir plus en d\u00e9tails dans un prochain TP.\n  <\/p>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-fonction-3-reconnaissance-de-visages\">\n   Fonction 3 : reconnaissance de visages\n  <\/h2>\n  \n  \n  <p>\n   Une fois que vous avez compris comment fonctionne la d\u00e9tection et l&rsquo;enregistrement de visages, la reconnaissance des visages est tr\u00e8s simple, car la\u00a0reconnaissance de visage s&rsquo;op\u00e8re constamment gr\u00e2ce au logiciel de Cozmo.\n  <\/p>\n  \n  \n  <p>\n   Les instances de l&rsquo;objet\n   <em>\n    Face\n   <\/em>\n   disposent d&rsquo;un attribut\n   <em>\n    <a href=\"http:\/\/cozmosdk.anki.com\/docs\/generated\/cozmo.faces.html#cozmo.faces.Face.name\">\n     name\n    <\/a>\n   <\/em>\n   . Cet attribut est une string qui contient le nom de la personne reconnue. Si le champ est vide, c&rsquo;est qu&rsquo;il n&rsquo;y a pas eu de reconnaissance.\n  <\/p>\n  \n  \n  <h2 class=\"wp-block-heading\" id=\"h-tuto-4-reconnaissance-d-emotion\">\n   Tuto 4 : reconnaissance d&rsquo;\u00e9motion\n  <\/h2>\n  \n  \n  <p>\n   Le robot Cozmo embarque dans son SDK le n\u00e9cessaire pour d\u00e9tecter les \u00e9motions sur les visages. Il peut reconna\u00eetre les expressions faciales suivantes : neutre, joie, surprise, tristesse et col\u00e8re.\n  <\/p>\n  \n  \n  <p>\n   Pour activer cette reconnaissance d&rsquo;\u00e9motion il faut activer\n   <em>\n    enable_facial_expression_estimation\n   <\/em>\n   .\n  <\/p>\n  \n  <div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <a href=\"https:\/\/github.com\/generationrobots-lab\/cozmo-examples\/blob\/master\/vision_simple_face_emotion.py\" title=\"Afficher vision_simple_face_emotion.py\" target=\"_blank\" class=\"code-embed-name\">vision_simple_face_emotion.py<\/a> <a href=\"https:\/\/raw.github.com\/generationrobots-lab\/cozmo-examples\/master\/vision_simple_face_emotion.py\" title=\"Back to vision_simple_face_emotion.py\" class=\"code-embed-raw\" target=\"_blank\">affichage brut<\/a> <\/div> <pre class=\"language-python code-embed-pre line-numbers\"  data-line=\"35\" data-start=\"34\" data-line-offset=\"33\"><code class=\"language-python code-embed-code\">\t\t# Activer la reconnaissance d&#039;expression<br\/>\t\trobot.enable_facial_expression_estimation(True)<\/code><\/pre> <\/div><\/div>\n\n  \n  <p>\n   L&rsquo;objet\n   <em>\n    Face\n   <\/em>\n   dispose des attributs\n   <em>\n    known_expression\n   <\/em>\n   ,\n   <em>\n    expression_score\n   <\/em>\n   . Ces valeurs sont calcul\u00e9es constamment sur le visage d\u00e9tect\u00e9 par la cam\u00e9ra. Vous pouvez y acc\u00e9der de la fa\u00e7on suivante :\n  <\/p>\n  \n  <div class=\"wp-block-wab-pastacode\">\n\t<div class=\"code-embed-wrapper\"> <div class=\"code-embed-infos\"> <a href=\"https:\/\/github.com\/generationrobots-lab\/cozmo-examples\/blob\/master\/vision_simple_face_emotion.py\" title=\"Afficher vision_simple_face_emotion.py\" target=\"_blank\" class=\"code-embed-name\">vision_simple_face_emotion.py<\/a> <a href=\"https:\/\/raw.github.com\/generationrobots-lab\/cozmo-examples\/master\/vision_simple_face_emotion.py\" title=\"Back to vision_simple_face_emotion.py\" class=\"code-embed-raw\" target=\"_blank\">affichage brut<\/a> <\/div> <pre class=\"language-python code-embed-pre line-numbers\"  data-line=\"50\" data-start=\"41\" data-line-offset=\"40\"><code class=\"language-python code-embed-code\">\t\t\t# l&#039;\u00e9v\u00e9nement renvoi un objet<br\/>\t\t\te = robot.world.wait_for(cozmo.faces.EvtFaceObserved)<br\/><br\/>\t\t\t# on r\u00e9cup\u00e8re l&#039;objet Face<br\/>\t\t\tface = e.face<br\/><br\/>\t\t\t# on filtre sur un seuil de reconnaisance minimal de l&#039;expression d\u00e9tect\u00e9e<br\/>\t\t\tif face.expression_score &gt; 60:<br\/>\t\t\t\t# on affiche Face.face_id, Face.know_expression, Face.expression_score et Face.name<br\/>\t\t\t\tprint(&quot;Visage &quot;, str(face.face_id), &quot; : &quot;, face.known_expression, &quot;(&quot;, str(face.expression_score), &quot;%)&quot;)<br\/>\t\t<\/code><\/pre> <\/div><\/div>\n\n  \n  <p>\n   Vous pouvez t\u00e9l\u00e9charger et tester le code\n   <a href=\"https:\/\/github.com\/generationrobots-lab\/cozmo-examples\/blob\/master\/vision_simple_face_emotion.py\" rel=\"noopener\" target=\"_blank\">\n    vision_simple_face_emotion.py\n   <\/a>\n   disponible sur notre repository. Il affichera l&rsquo;expression reconnue et le score dans votre terminal de commande.\n  <\/p>\n  \n  \n  <figure class=\"wp-block-image aligncenter\">\n   <a href=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/10\/cozmo_script_emotion.png\">\n    <img fetchpriority=\"high\" decoding=\"async\" width=\"1229\" height=\"218\" alt=\"\" class=\"wp-image-5706\" src=\"https:\/\/blog.generationrobots.com\/wp-content\/uploads\/2018\/10\/cozmo_script_emotion.png\" srcset=\"https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/cozmo_script_emotion.png 1229w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/cozmo_script_emotion-300x53.png 300w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/cozmo_script_emotion-768x136.png 768w, https:\/\/www.generationrobots.com\/blog\/wp-content\/uploads\/2018\/10\/cozmo_script_emotion-1024x182.png 1024w\" sizes=\"(max-width: 1229px) 100vw, 1229px\" \/>\n   <\/a>\n  <\/figure>\n  \n  \n  <p>\n   Les 5 expressions faciales suivantes sont reconnue par cozmo :\n  <\/p>\n  \n  \n  <ul class=\"wp-block-list\">\n   \n   <li>\n    <strong>\n     neutre ( neutral )\n    <\/strong>\n   <\/li>\n   \n   \n   <li>\n    <strong>\n     joie ( happy )\n    <\/strong>\n   <\/li>\n   \n   \n   <li>\n    <strong>\n     surprise ( surprised )\n    <\/strong>\n   <\/li>\n   \n   \n   <li>\n    <strong>\n     tristesse ( sad )\n    <\/strong>\n   <\/li>\n   \n   \n   <li>\n    <strong>\n     col\u00e8re (angry )\n    <\/strong>\n   <\/li>\n   \n  <\/ul>\n  \n  \n  <p>\n   Vous pouvez consulter la documentation de Anki sur les\n   <a href=\"http:\/\/cozmosdk.anki.com\/docs\/generated\/cozmo.faces.html#cozmo.faces.Face.expression\" rel=\"noopener\" target=\"_blank\">\n    expressions\u00a0reconnues par Cozmo\n   <\/a>\n   et le\n   <a href=\"http:\/\/cozmosdk.anki.com\/docs\/generated\/cozmo.faces.html#cozmo.faces.Face.expression_score\" rel=\"noopener\" target=\"_blank\">\n    score de reconnaissance\n   <\/a>\n  <\/p>\n  \n <\/body>\n<\/html>","protected":false},"excerpt":{"rendered":"<p>Nous poursuivons la d\u00e9couverte du SDK Cozmo avec la d\u00e9tection de visages et d&rsquo;\u00e9motions, ainsi que la reconnaissance embarqu\u00e9e sur le robot Cozmo. Cozmo dispose du hardware et software n\u00e9cessaire \u00e0 la reconnaissance des visages. Il est capable d&rsquo;associer un nom \u00e0 chaque visage ( enrollment ), mais aussi de percevoir les \u00e9motions sur les[&#8230;]<br \/> <a class=\"button\" href=\"https:\/\/www.generationrobots.com\/blog\/fr\/cozmo-sdk-detection-et-reconnaissance-faciale\/\" style=\"float:right;\">Read this article &gt;&gt;<\/a><\/p>\n","protected":false},"author":306,"featured_media":5557,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1128],"tags":[],"class_list":["post-5442","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-education"],"_links":{"self":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/5442","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/users\/306"}],"replies":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/comments?post=5442"}],"version-history":[{"count":31,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/5442\/revisions"}],"predecessor-version":[{"id":13156,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/posts\/5442\/revisions\/13156"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media\/5557"}],"wp:attachment":[{"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/media?parent=5442"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/categories?post=5442"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.generationrobots.com\/blog\/wp-json\/wp\/v2\/tags?post=5442"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}