将 arm_compute::Image 转换为 cv::Mat
Posted
技术标签:
【中文标题】将 arm_compute::Image 转换为 cv::Mat【英文标题】:convert arm_compute::Image to cv::Mat 【发布时间】:2018-03-01 23:42:04 【问题描述】:我有很多基于 open cv 的代码,但是 Arm Compute 库可以通过多种方式提高性能,所以我想将一些 arm 计算库代码集成到我的项目中。有没有人尝试在两个相应的 Image 结构之间进行转换?如果是这样,你做了什么?或者有没有一种方法可以共享指向底层数据缓冲区的指针,而无需复制图像数据,只需适当地设置步幅和标志?
【问题讨论】:
您认为 Arm Compute Library 中哪些具体功能比 OpenCV 优化得更好? 我在创建图像金字塔方面获得了大约 4 倍的性能,在哈里斯角检测方面获得了 3 倍的性能,并且可能在光流方面提高了 20%。这是 arm 计算和 NEON 优化的 opencv 之间的比较。 好的,这令人印象深刻。感谢您抽出宝贵时间回复。 【参考方案1】:我能够配置与我的 cv::Mat 属性相对应的 arm_compute::Image,分配内存,并将其指向我的 cv:Mat 的数据部分。
这样,我可以使用 arm_compute 有效地处理我的图像,并维护我在项目其余部分中拥有的 opencv 基础架构。
// cv::Mat mat defined and initialized above
arm_compute::Image image;
image.allocator()->init(arm_compute::TensorInfo(mat.cols, mat.rows, Format::U8));
image.allocator()->allocate();
image.allocator()->import_memory(Memory(mat.data));
【讨论】:
【参考方案2】:ACL 18.05 或更高版本的更新
你需要实现IMemoryRegion.h
我为此创建了一个要点:link
【讨论】:
以上是关于将 arm_compute::Image 转换为 cv::Mat的主要内容,如果未能解决你的问题,请参考以下文章
将rowdatapacket转换为数组,如何将mysql node.js api rowdatapacket转换为数组,将字符串转换为数组