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

IBM Watson Unity 3d Visual Recognition SDK: Parsing the classifier output results

我正在尝试将 Onclassify 调用的结果转换为可用的格式。我似乎不知道如何 return 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!");
    }
}

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

您可以像这样提取每个数组中第一项的每个结果的 class 和分数:

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;
}

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

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