假设我们有一些 OpenCV 常用图像垫:
cv::Mat usual_image = cv::imread(...)
此图像在内存中存储为 HWC/NHWC 数组。
是否可以将此图像作为 CHW/NCHW(分离的 channel 阵列,在某种意义上)复制到 cuda 内存中而无需超高成本 cv::split?
仅用于可视化 HWC 和 CHW:
最佳答案
最快的方法是将图像原样复制到 GPU,然后 write a GPU kernel将数据分成 3 个缓冲区。
较慢的替代方法是使用 3 calls到 cudaMemcpy2D
将数据从主机复制到设备,每个平面调用一次。
关于opencv - 从 HWC 转换为 CHW 的 cudaMemcpy 图像数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70529937/