如何将OpenCV Mat作为putExtra发送到Android Intent?

如何将OpenCV Mat作为putExtra发送到Android Intent?,第1张

概述我正在尝试将CvCameraViewFrame或Mat发送到另一个活动,但是他们没有实现Serializable或Parcelable,并且为他们创建一个包装器类仅使用一次似乎太过分了.我该如何进行?解决方法:我本来会用片段代替活动,然后从片段中获取/设置容器活动中存在的通用Mat.如果需要坚持多项活动(假设它

我正在尝试将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?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1079018.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存