OpenCV如何将GpuMat复制到另一个GPU指针并复制回来以验证正确性?

Posted

技术标签:

【中文标题】OpenCV如何将GpuMat复制到另一个GPU指针并复制回来以验证正确性?【英文标题】:OpenCV how to copy GpuMat to another GPU pointer and copy back to verify correctness? 【发布时间】:2021-07-24 00:42:57 【问题描述】:

任何机构都可以给我一个可行的例子吗?

我想将一个 3 通道图像从 GpuMat 复制到另一个 gpu 指针,并且我希望指针存储的数据与原始图像完全相同。

如何处理?

【问题讨论】:

【参考方案1】:

OpenCV 提供了函数 assignTo 来复制图像,还提供了 clone 函数,这在你的情况下更简单。

或者,如果您对此有任何问题,可以使用ptr 函数获取GPU 设备上的原始指针,然后使用CUDA API(例如cudaMemcpy)。

【讨论】:

先生,您只是重复了我的问题,没有回答我的问题。我想使用 cudaMemcpy 将 GpuMat 复制到我的另一个 gpu 位置,但是如何??我试过但失败了,我需要一个可行的例子。 好吧,您只需要调用GpuMat copy = yourImage.clone();,然后调用copy.ptr() 即可“将3 通道图像从GpuMat 复制到另一个gpu 指针[...] 与原始图像完全相同”。这很简单,文档对此非常清楚。 你能给我一个可行的例子吗?我试了一下,但是复制到 gpu ptr 的数据是完全错误的。

以上是关于OpenCV如何将GpuMat复制到另一个GPU指针并复制回来以验证正确性?的主要内容,如果未能解决你的问题,请参考以下文章

请问opencv的GPU模块里,与GpuMat挂钩的PtrStep 和 PtrStepSz两个数据结构有啥区别?

gpumat 和 mat 错误

提取一个连续的 OpenCV cuda::GpuMat?

OpenCV和Cuda结合编程

GpuMat ROI

GpuMat ROI