在javascript中访问值

时间:2014-05-18 20:19:31

标签: javascript

我使用JS库进行面部追踪/情感检测,称为CLMtracker。

http://auduno.github.io/clmtrackr/examples/clm_emotiondetection.html

注意:对于那些试图使用它的人来说,似乎最适合使用Chrome。

我正在使用的示例,我想知道如何访问每种情感的值。例如,我希望每10秒检查一次值是什么,然后打印到控制台。由此我还想比较这些值以找到最高值并找到与之相关的情感。我认为我说max()函数会给我一个最高的数组吗?

我尝试过:

我试图获得emotionData [0] .emotion和emotionData [0] .value应该打印愤怒和值,但它只打印0.我也尝试了相同的方法,数据似乎没有返回任何东西。

修改

情绪数据让我:

然而,当我更改表达时,它似乎没有显示任何更新/更改

enter image description here

1 个答案:

答案 0 :(得分:1)

ec.meanPredict(ctrack.getCurrentParameters())返回一个包含所有情绪当前得分的对象。

例如,要获得“愤怒”的当前分数,您可以这样做:

ec.meanPredict(ctrack.getCurrentParameters())[0].value

所以,为了获得当前最可能的情绪,你可以这样做:

function getCurrentEmotion()
{
    if(!ec.meanPredict(ctrack.getCurrentParameters())){setTimeout(getCurrentEmotion,1000);return;}
    var currentData = ec.meanPredict(ctrack.getCurrentParameters());
    var currentScores = [];

    //Gather all scores in an array
    for(var i=0;i<currentData.length;i++)
    {
        currentScores.push(currentData[i].value);
    }

    //Get the biggest score
    var max = Math.max.apply(null,currentScores);
    //Calculate its index
    var indexOfScore = currentScores.indexOf(max);
    //Get the associated emotion
    var emotion = currentData[indexOfScore].emotion;
    console.log(emotion);

    //Set up a loop (did not add 'var', to allow stopping it from outside)
    currentEmotionLoop = setTimeout(getCurrentEmotion,3000);
}

要随时停止循环,请执行以下操作:

clearTimeout(currentEmotionLoop);

顺便说一下,ec变量是私有声明的,所以为了使它能够工作,请删除声明它的var

var ec = new emotionClassifier();

或将此代码写在同一文件中的相同范围内。