我正在从资产中加载一个位图来对其进行一些分类。位图是从资产文件夹加载的,没问题。当我在调试模式下运行时,我可以查看我的位图图像。但是,当我试图将它传递给我的方法"分类"我有这个错误:
FATAL EXCEPTION: main
Process: com.example.anne_maelle.cifar10_final, PID: 10046
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.example.anne_maelle.cifar10_final.ImageClassifier.classifyFrame(android.graphics.Bitmap)' on a null object reference
at com.example.anne_maelle.cifar10_final.ClassifyActivity.classify(ClassifyActivity.java:61)
at com.example.anne_maelle.cifar10_final.ClassifyActivity.run_test(ClassifyActivity.java:54)
at com.example.anne_maelle.cifar10_final.ClassifyActivity$1.onClick(ClassifyActivity.java:37)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
我试图显示位图,但它没有做任何事情:没有错误但也没有图像。 我的代码是:
protected void run_test() throws IOException{
AssetManager assets = this.getAssets();
String imgs[] = assets.list("images");
System.out.println("run test apres getAsset: "+imgs.toString());
for(int i=0;i<imgs.length;i++){
if(imgs[i].contains(".bmp")){
System.out.println("loop, iteration "+i);
Bitmap image = imageViaAssets(imgs[i],assets);
if(image==null){
Log.d(TAG,"null image");
}
else{
Log.d(TAG,"image not null");
}
classify(image);
}
}
}
protected Bitmap imageViaAssets(String filename,AssetManager assets)throws IOException{
InputStream ims = assets.open("images/"+filename);
Bitmap image = BitmapFactory.decodeStream(ims);
ims.close();
ImageView img = (ImageView) findViewById(R.id.imageView);
img.setImageBitmap(image);
return image;
}