clarifai2 java客户端。 concept.name()导致Java NullPointerException,但concept.value返回置信度值

时间:2018-03-06 05:30:39

标签: java android clarifai

在图像上调用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();
                                }
                            }
                        }
                    }
                }
            }

1 个答案:

答案 0 :(得分:0)

NullPointerException不是由于concept.name()而是由于ResultList.add()方法。

需要初始化ResultList以避免异常

List<String> ResultList = new ArrayList<String>();

这将解决问题