我的目标是使用 OpenCV 函数(例如 NL 表示去噪)增强我预先存在的图像处理管道(用 Halide 编写)。OpenCV 函数将无法使用 Halide 的调度功能,因此我的计划是在每个 OpenCV 阶段之前实现每个 Halide Func。剩下的问题是如何最好地从 Halide Image(Func 实现的结果)转换为 OpenCV Mat(作为 OpenCV 函数的输入),并在完成后从 OpenCV Mat 转换为 Halide Image。我的卤化物图像是浮动类型,有 3 个通道。
一个明显的解决方案是编写将数据从一种数据类型复制到另一种数据类型的函数,但这让我觉得很浪费。复制数据不仅需要宝贵的时间,而且还会浪费内存,因为图像将被存储为两种不同的数据类型。有没有办法使用指针或数据缓冲区来简单地以新格式重新包装图像数据?希望这个过程是可逆的,所以我可以从 Halide 转到 OpenCV,然后在 OpenCV 功能完成后返回到 Halide。