我试图将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!");
}
}
答案 0 :(得分:2)
ClassifyTopLevelMultiple
对象包含ClassifyTopLevelSingle
属性中的images
个对象数组。在每个ClassifyTopLevelSingle
个对象中,有一组ClassifyPerClassifier
个对象,它们为每个自定义分类器提供结果。每个ClassifyPerClassifier
对象都有ClassResult
个对象列表,其中包含class
和score
。
您可以为每个数组中的第一个项目提取每个结果的类和分数,如下所示:
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版本开始可能是值得的,因为最新版本是对以前所有版本的重大改变。