enter image description here

Я довольно новичок в Javascript и работаю над проектом, использующим распознавание лиц для выявления эмоций. Часть распознавания лица обнаруживает эмоции, но мне нужно получить доступ к полученным эмоциям. Постоянная обратная связь поступает от API распознавания лиц, и результаты постоянно меняются под тегом "div" id = results

<div id="results" style="word-wrap:break-word;">
<span> Timestamp: 93.12 </span>
<br>
<span>Number of faces found: 1</span>
<br>
<span> Appearance: {"gender":"Male","glasses":"Yes","age":"25 - 34","ethnicity":"Black African"}</span><br><span>Emotions: {"joy":0,"sadness":0,"disgust":1,"contempt":0,"anger":0,"fear":0,"surprise":0,"valence":0,"engagement":0}
</span>
<br>
<span> Emoji: 
<img class="chromoji" title="Neutral Face" alt=":neutral_face:"     src="chrome-extension://cahedbegdkagmcjfolhdlechbkeaieki/images/apple/1f610.png"></span>
<br>
</div>

Название «Нейтральное лицо» или альт - один из атрибутов необходимой доминирующей эмоции.

Я пытался использовать решения из

Извлечь свойство тега в HTML с помощью Javascript и Как получить атрибут заголовка по ссылке внутри класс с JavaScript

В моем собственном коде у меня есть

<div id="results" style="word-wrap:break-word;">
               <script>
                 //var images = document.querySelectorAll('img');
                 var emotion = document.getElementByTagName("img")[0].getAttributes("title");
                 console.log(emotion)
               </script>
             </div>

Я попытался использовать последние две строки кода в этом фрагменте в файле JS, который дает результаты

detector.addEventListener("onImageResultsSuccess", function(faces, image, timestamp) {
  $('#results').html("");
  log('#results', "Timestamp: " + timestamp.toFixed(2));
  log('#results', "Number of faces found: " + faces.length);
  if (faces.length > 0) {
    log('#results', "Appearance: " + JSON.stringify(faces[0].appearance));
    log('#results', "Emotions: " + JSON.stringify(faces[0].emotions, function(key, val) {
      return val.toFixed ? Number(val.toFixed(0)) : val;
    }));
    log('#results', "Emoji: " + faces[0].emojis.dominantEmoji);
    drawFeaturePoints(image, faces[0].featurePoints);
    var motion =  faces[0].emojis.dominantEmoji;
    log('#results', motion);
  }
});

Также в другое время я добавил это в файл JS, который нуждается в обратной связи для распознавания эмоций

var tag = document.getElementByTagName("img")
      var emotion= tag.getAttribute("title");
      console.log(emotion);

Также на другом отдельном испытании я сделал это в файле индекса HTML

<script type="text/javascript">
                var image = document.getElementsByTagName("img")[0];
                var title = image.getAttribute("title");
                console.log(title); // shows the value of title for the element "image"
              </script>

Основная идея проекта - обнаружить эмоции пользователей и воспроизводить музыку на основе этих эмоций.

5
Kelvin Njeri 13 Дек 2016 в 07:07

3 ответа

Лучший ответ

Пожалуйста, попробуйте следующий код.

<script type="text/javascript">
    var image = document.getElementsByTagName("img")[0];
    var title = image.getAttribute("title");

    console.log(title); // shows the value of title for the element "image"
</script>

См. Демонстрационную версию здесь: http://codepen.io/anon/pen/vyVQBJ.

5
Mukesh Panchal 14 Дек 2016 в 09:05

Вместо использования getAttributes("title"‌​) используйте getAttribute("title"‌​), так как в JavaScript нет функции, подобной getAttributes .

Рабочая демонстрация .

var emotion = document.getElementsByTagName("img")[0].getAttribute("title");
console.log(emotion);
<img class="chromoji" title="Neutral Face" alt=":neutral_face:"     src="https://i.stack.imgur.com/cp7qK.png" width="400" height="200">
0
Rohit Jindal 13 Дек 2016 в 06:00

В одном из ваших комментариев вы сказали, что пытались

var emotion = document.getElementByTagName("img")[0].getAttributes("title"‌​);

Попробуйте вместо этого использовать

var emotion = document.getElementsByTagName("img")[0].getAttribute("title"‌​);

Функция getAttribute () не имеет s в конце, а функция getElementsByTagName имеет s после элементов. Кроме того, в вашем теге сценария объявите его как javascript, как,

<script type="text/javascript"> // your code </script>

Не забывайте точку с запятой после console.log (эмоция);

0
Nick Winner 13 Дек 2016 в 04:36