android位图不为null,但始终使nullpointerexception
我正在为android实现+opencv for android。 topcode用于获取屏幕中的标记位置。 在topcode中,扫描方法仅接受位图参数。 所以我把我的垫子转换成位图 这是我的密码android位图不为null,但始终使nullpointerexception,android,opencv,bitmap,nullpointerexception,Android,Opencv,Bitmap,Nullpointerexception,我正在为android实现+opencv for android。 topcode用于获取屏幕中的标记位置。 在topcode中,扫描方法仅接受位图参数。 所以我把我的垫子转换成位图 这是我的密码 private Scanner scanner; private List<TopCode> codes; //.......................... public Mat onCameraFrame(CvCameraViewFrame inputFrame) { /
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;
}
我不知道现在该怎么办。请帮帮我。您必须初始化扫描仪。您的bmp没有问题,您已经在if语句中检查过了。您可以这样初始化它:(只需在try-catch语句之前添加这一行)
请尝试以下代码
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;
}
私人扫描仪;
私人名单代码;
//..........................
CameraFrame上的公用Mat(CvCameraViewFrame输入框){
//TODO自动生成的方法存根
mRgb=inputFrame.rgba();
位图bmp=Bitmap.createBitmap(mRgb.cols()、mRgb.rows()、Bitmap.Config.ARGB_8888);
试一试{
Utils.matToBitmap(mRgb,bmp,true);
如果(bmp!=null){
如果(扫描器==null)
扫描仪=新扫描仪(System.in);
代码=扫描器扫描(bmp);
}
}捕获(例外e){
e、 printStackTrace();
}
返回mRgb;
}
onCameraFrame方法中的155行是什么?code=scanner.scan(bmp);可能bmp不为空,但扫描仪可以为空!你检查过它是否为空吗?你在哪里实例化扫描仪?我不知道如何检查扫描仪。你刚刚解决了我的问题。我真傻,忘了一些基本的东西。哈哈哈。非常感谢。
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;
}