我正在尝试将CvCameraviewFrame或Mat发送到另一个活动,但是他们没有实现Serializable或Parcelable,并且为他们创建一个包装器类仅使用一次似乎太过分了.
我该如何进行?
解决方法:
我本来会用片段代替活动,然后从片段中获取/设置容器活动中存在的通用Mat.
如果需要坚持多项活动(假设它在流程中),则可以选择
>共享-优选地在诸如HashMap< String,WeakReference< Mat>>之类的东西中使用全局Application子类来获取/设置Mat.并在活动之间传递HashMap的键字符串(1).确保在子活动完成onResume()之前存储对Mat的强引用,否则可能会垃圾回收Mat.
>复制-使用getNativeObjAddr(2)并将长地址值作为调用Intent的一部分传递.子活动将使用原始地址(3)重新创建Mat.必须在孩子中克隆Mat,因为在完成孩子的活动恢复后的任何时间都可以杀死父母的活动.
下面的示例.
// In parent activityMat img = ...;long addr = img.getNativeObjAddr();Intent intent = new Intent(this, B.class);intent.putExtra( "myimg", addr );startActivity( intent );//In child activitylong addr = intent.getLongExtra("myimg", 0);Mat tempimg = new Mat( addr );Mat img = tempimg.clone();
总结 以上是内存溢出为你收集整理的如何将OpenCV Mat作为putExtra发送到Android Intent?全部内容,希望文章能够帮你解决如何将OpenCV Mat作为putExtra发送到Android Intent?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)