将 arm_compute::Image 转换为 cv::Mat
convert arm_compute::Image to cv::Mat
我有很多基于 open cv 的代码,但是 Arm Compute 库可以通过多种方式提高性能,所以我想将一些 arm compute 库代码集成到我的项目中。有没有人尝试过在两个对应的图像结构之间进行转换?如果是这样,你做了什么?或者有没有一种方法可以共享指向底层数据缓冲区的指针,而无需复制图像数据并适当地设置步幅和标志?
我能够配置与我的 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));
更新 ACL 18.05 或更高版本
您需要实施IMemoryRegion.h
我为此创建了一个要点:link
我有很多基于 open cv 的代码,但是 Arm Compute 库可以通过多种方式提高性能,所以我想将一些 arm compute 库代码集成到我的项目中。有没有人尝试过在两个对应的图像结构之间进行转换?如果是这样,你做了什么?或者有没有一种方法可以共享指向底层数据缓冲区的指针,而无需复制图像数据并适当地设置步幅和标志?
我能够配置与我的 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));
更新 ACL 18.05 或更高版本
您需要实施IMemoryRegion.h
我为此创建了一个要点:link