1

我正在尝试将 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!");
    }
}
4

1 回答 1

2

该对象在属性ClassifyTopLevelMultiple中包含一个对象数组。在每个对象中,都有一个对象数组,可以为您提供每个自定义分类器的结果。每个对象都有一个对象列表,其中包含和。ClassifyTopLevelSingleimagesClassifyTopLevelSingleClassifyPerClassifierClassifyPerClassifierClassResultclassscore

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

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。如果您刚刚开始一个项目,那么从最新的 SDK 版本开始可能是值得的,因为最新版本是对所有先前版本的重大更改。

于 2017-09-06T13:29:50.963 回答