我有很多基于OpenCV的代码,但Arm Compute库在许多方面都能提高性能,所以我想将一些Arm Compute库的代码集成到我的项目中。有人尝试过在两种对应的Image结构之间进行转换吗?如果有,你是怎么做的?或者有没有一种方法可以共享指向底层数据缓冲区的指针,而不需要复制图像数据,只需适当设置步长和标志?
回答:
我成功配置了一个arm_compute::Image,它对应于我的cv::Mat属性,分配了内存,并指向我的cv::Mat的数据部分。
这样,我可以使用arm_compute高效处理我的图像,同时保留我在项目中使用的OpenCV基础设施。
// cv::Mat mat 在上面定义并初始化
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));