Java 在Android捆绑包中发送OpenCV Mat
我想将org.opencv.core.Mat对象打包发送。我决定使用Gson,因为它看起来简单快捷 父活动:Java 在Android捆绑包中发送OpenCV Mat,java,android,opencv,android-intent,bundle,Java,Android,Opencv,Android Intent,Bundle,我想将org.opencv.core.Mat对象打包发送。我决定使用Gson,因为它看起来简单快捷 父活动: public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.areas_creator_activity: Gson gs = new Gson(); String stringBackgr
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.areas_creator_activity:
Gson gs = new Gson();
String stringBackground = gs.toJson(guard.getBackground());
Intent intentAreasCreatorActivity = new Intent(MainActivity.this, AreasCreatorActivity.class);
intentAreasCreatorActivity.putExtra("background", stringBackground);
startActivityForResult(intentAreasCreatorActivity,2);
break;
}
return true;
}
儿童活动:
public void onResume()
{
super.onResume();
String jsonMyObject= new String();
Bundle extras = getIntent().getExtras();
if (extras != null) {
jsonMyObject = extras.getString("myObject");
}
Gson gs = new Gson();
Mat myObject = gs.fromJson(jsonMyObject, Mat.class);
background=myObject;
//Log.i("@string/app_name", background.toString());
}
LogCat
05-05 19:59:12.286: E/AndroidRuntime(7961): FATAL EXCEPTION: main
05-05 19:59:12.286: E/AndroidRuntime(7961): java.lang.RuntimeException: Unable to resume activity {pl.net.lach.pracainz/pl.net.lach.pracainz.AreasCreatorActivity}: java.lang.NullPointerException
当我在背景对象上使用Mat metod时有一个问题(注释行)。怎么了Mat包含一个本地C++对象(指向CV::MAT的指针)。我不认为,您可以使用gson序列化它,当您打印json时,它看起来如何?在父活动中:
05-05 21:23:19.892:INFO/@string/app_name(15577):stringBackground={“nativeObj”:1556479152}
在Child中为空。你的建议是什么?我可能完全错了,但是原始的垫子可能在这段时间内被gc’ed了,留下一个悬垂的指针给你什么是好的解决方案?将其转换为位图?