IBM Watson Unity 3d Visual Recognition SDK:解析分类器输出结果

时间:2017-09-05 19:35:50

标签: c# unity3d ibm-watson visual-recognition

我试图将Onclassify调用的结果变为可用的格式。我似乎无法弄清楚如何返回 classResult.m_class为可用格式,例如更新Text对象或将其存储在变量中。

有人可以建议一个好的推荐方法,将classResult.m_class中的结果传递给多个或单个分类器变成我可以在以后操作或传递给其他函数的变量。

private void OnClassify(ClassifyTopLevelMultiple classify, string data)
{
    if (classify != null)
    {
        Log.Debug("WebCamRecognition", "images processed: " + classify.images_processed);
        foreach (ClassifyTopLevelSingle image in classify.images)
        {

            Log.Debug("WebCamRecognition", "\tsource_url: " + image.source_url + ", resolved_url: " + image.resolved_url);
            foreach (ClassifyPerClassifier classifier in image.classifiers) {

                Log.Debug ("WebCamRecognition", "\t\tclassifier_id: " + classifier.classifier_id + ", name: " + classifier.name);
                foreach (ClassResult classResult in classifier.classes) {
                    Log.Debug ("WebCamRecognition", "\t\t\tclass: " + classResult.m_class + ", score: " + classResult.score + ", type_hierarchy: " + classResult.type_hierarchy);
                }
            }
        }
    }
    else
    {
        Log.Debug("WebCamRecognition", "Classification failed!");
    }
}

1 个答案:

答案 0 :(得分:2)

ClassifyTopLevelMultiple对象包含ClassifyTopLevelSingle属性中的images个对象数组。在每个ClassifyTopLevelSingle个对象中,有一组ClassifyPerClassifier个对象,它们为每个自定义分类器提供结果。每个ClassifyPerClassifier对象都有ClassResult个对象列表,其中包含classscore

您可以为每个数组中的第一个项目提取每个结果的类和分数,如下所示:

private void OnClassifyGet(ClassifyTopLevelMultiple classify, string data)
{
    string class = classify.images[0].classifiers[0].classes[0].m_class;
    string classScore= classify.images[0].classifiers[0].classes[0].score;
}

您发布的示例代码将遍历所有图像,分类器和类,以列出每个ClassifyTopLevelMultiple结果中的所有类和分数。

还值得注意的是,Watson Unity SDK有updated version。如果您刚刚开始一个项目,那么从最新的SDK版本开始可能是值得的,因为最新版本是对以前所有版本的重大改变。