在图像上调用clarifai
API时,它返回ClarifaiOutput概念列表。但是在访问概念时,只能访问值。访问概念的名称会产生NullPointerException
。
concept.name()导致异常,而concept.value()工作正常
可以使用try catch块处理Exception,但我想知道预测的概念名称。
请让我知道如何解决这个问题。
以下是相同的代码:
public void run() {
List<String> ResultList = null;
String ResultString = "";
final List<ClarifaiOutput<Concept>> predictionResults = client.getDefaultModels().generalModel().predict().
withInputs(ClarifaiInput.forImage(new File(pictureFile.getAbsolutePath())))
.executeSync()
.get();
if(predictionResults!=null && predictionResults.size()>0){
ListIterator<ClarifaiOutput<Concept>> itr= predictionResults.listIterator();
while(itr.hasNext()){
ClarifaiOutput<Concept> output = itr.next();
List<Concept> concepts = output.data();
if(concepts != null && concepts.size() > 0){
for (int j = 0; j < concepts.size(); j++) {
Concept concept = concepts.get(j);
float cval=0;
cval = concept.value();
if(cval > 0){
ResultList.add(concept.name());
ResultString += concept.name();
}
}
}
}
}
}
答案 0 :(得分:0)
NullPointerException不是由于concept.name()而是由于ResultList.add()方法。
需要初始化ResultList以避免异常
List<String> ResultList = new ArrayList<String>();
这将解决问题