在图像上调用clarifai API时,它将返回ClarifaiOutput概念列表。但在访问概念时,只能访问值。访问概念的名称会产生NullPointerException。
concept.name()会导致异常,而concept.value()可以正常工作
可以使用try catch块处理异常,但我想知道预测的概念名称。
请告诉我可以做些什么来解决这个问题。
下面是相同的代码:
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();
}
}
}
}
}
}发布于 2018-03-06 15:10:09
NullPointerException不是由concept.name()引起的,而是由ResultList.add()方法引起的。
需要初始化ResultList以避免异常
List<String> ResultList = new ArrayList<String>();这就解决了这个问题
https://stackoverflow.com/questions/49123976
复制相似问题