仅使用Cuda重写openCV函数

时间:2014-06-14 12:49:40

标签: opencv image-processing cuda parallel-processing gpu

我的代码用c ++编写,我使用openCV函数进行图像处理任务。

我想在GPU中运行我的代码(使用cuda)来读取相机/流输入并在每个帧中并行执行图像处理任务。

我读过一些我无法在.cu代码中包含openCV函数的地方,因为NVCC无法编译openCv函数(如果不是这样,请纠正我)

我在openCV文档中找到了openCV gpu模块,但是我不希望并行运行整个函数,我想要并行处理整个算法(换句话说,在cuda中包含openCv而不是反过来),所以我想过用cuda编写我所有的openCV函数,但我是cuda的新手。 我的问题:

1-是否有可以使用cuda函数代替openCv函数:

  • split,inRange
  • fillHoles
  • 形态学(侵蚀,扩张,闭合)
  • Countours(findContours,moment,boundingRect,approxPolyDP)
  • 绘图功能(drawContours,矩形,圆形)
  • kmeans(或任何其他群集功能)

我在Github中找到了一些,但仍然没有测试过,任何文档都会受到高度赞赏。

2- cuda是否只读取.pgm图像格式,我应该在将它们复制到设备之前转换它们吗?是否无法直接将相机输入读取到GPU全局内存?

3-您是否建议将我的代码保存在openCV中并使用其他库进行并行处理,如openCL?或使用CPU(而不是GPU)使用OpenMP进行并行处理?什么可能是我应该选择的最佳选择?

1 个答案:

答案 0 :(得分:1)

在开始这条路线之前,我建议您完成本教程的前几课:

https://www.udacity.com/course/cs344

然后,您将更好地了解GPU是否适合您的应用程序所需的内容。

在任何情况下,openCV 1.0主要在C中,而cuda内核在C中,所以也许你可以尝试将其中的一些包装到cuda内核中

干杯