我正在为Android实现topcode +为Android实现opencv。
topcode用于获取屏幕上的标记位置。
在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);
关于android - Android的位图不为空,但总是使nullpointerexception,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28913386/