android 位图不为空,但总是出现空指针异常
android bitmap not null but always make nullpointerexception
我正在为 android 实施 topcode + 为 android 实施 opencv。
topcode 用于获取屏幕中的标记位置。
在顶码中,扫描方法只接受位图参数。
所以我将垫子转换为位图。
这是我的代码
private Scanner scanner;
private List<TopCode> codes;
//..........................
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
// TODO Auto-generated method stub
mRgb = inputFrame.rgba();
Bitmap bmp = Bitmap.createBitmap(mRgb.cols(), mRgb.rows(),Bitmap.Config.ARGB_8888);
try {
Utils.matToBitmap(mRgb, bmp,true);
if(bmp != null){
codes = scanner.scan(bmp); ----> this giving null
}
} catch(Exception e) {
e.printStackTrace();
}
return mRgb;
}
这是错误日志
java.lang.NullPointerException
at com.example.ar.MainActivity.onCameraFrame(MainActivity.java:155)
at org.opencv.android.CameraBridgeViewBase.deliverAndDrawFrame(CameraBridgeViewBase.java:387)
at org.opencv.android.JavaCameraView$CameraWorker.run(JavaCameraView.java:328)
at java.lang.Thread.run(Thread.java:841)
我不知道现在该怎么办。请帮助我。
您必须初始化扫描仪。你的 bmp 没有问题,你已经在你的 if 语句中检查过了。您可以像这样初始化它:(只需在 try catch 语句之前添加此行)
Scanner scanner = new Scanner(System.in);
试试下面的代码
private Scanner scanner;
private List<TopCode> codes;
//..........................
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
// TODO Auto-generated method stub
mRgb = inputFrame.rgba();
Bitmap bmp = Bitmap.createBitmap(mRgb.cols(), mRgb.rows(),Bitmap.Config.ARGB_8888);
try {
Utils.matToBitmap(mRgb, bmp,true);
if(bmp != null){
if(scanner ==null)
scanner = new Scanner(System.in);
codes = scanner.scan(bmp);
}
} catch(Exception e) {
e.printStackTrace();
}
return mRgb;
}
我正在为 android 实施 topcode + 为 android 实施 opencv。 topcode 用于获取屏幕中的标记位置。 在顶码中,扫描方法只接受位图参数。 所以我将垫子转换为位图。
这是我的代码
private Scanner scanner;
private List<TopCode> codes;
//..........................
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
// TODO Auto-generated method stub
mRgb = inputFrame.rgba();
Bitmap bmp = Bitmap.createBitmap(mRgb.cols(), mRgb.rows(),Bitmap.Config.ARGB_8888);
try {
Utils.matToBitmap(mRgb, bmp,true);
if(bmp != null){
codes = scanner.scan(bmp); ----> this giving null
}
} catch(Exception e) {
e.printStackTrace();
}
return mRgb;
}
这是错误日志
java.lang.NullPointerException
at com.example.ar.MainActivity.onCameraFrame(MainActivity.java:155)
at org.opencv.android.CameraBridgeViewBase.deliverAndDrawFrame(CameraBridgeViewBase.java:387)
at org.opencv.android.JavaCameraView$CameraWorker.run(JavaCameraView.java:328)
at java.lang.Thread.run(Thread.java:841)
我不知道现在该怎么办。请帮助我。
您必须初始化扫描仪。你的 bmp 没有问题,你已经在你的 if 语句中检查过了。您可以像这样初始化它:(只需在 try catch 语句之前添加此行)
Scanner scanner = new Scanner(System.in);
试试下面的代码
private Scanner scanner;
private List<TopCode> codes;
//..........................
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
// TODO Auto-generated method stub
mRgb = inputFrame.rgba();
Bitmap bmp = Bitmap.createBitmap(mRgb.cols(), mRgb.rows(),Bitmap.Config.ARGB_8888);
try {
Utils.matToBitmap(mRgb, bmp,true);
if(bmp != null){
if(scanner ==null)
scanner = new Scanner(System.in);
codes = scanner.scan(bmp);
}
} catch(Exception e) {
e.printStackTrace();
}
return mRgb;
}