我的代码用c编写,我使用openCV函数进行图像处理任务 .
我想在GPU中运行我的代码(使用cuda)来读取相机/流输入并在每个帧中并行执行图像处理任务 .
我已经读过一些我不能在.cu代码中包含openCV函数的地方,因为NVCC无法编译openCv函数(如果不是这样,请纠正我)
我在openCV文档中找到了openCV gpu模块,但是我不希望并行运行整个函数,我想要并行处理整个算法(换句话说,在cuda中包含openCv而不是相反),所以我想过用cuda编写所有openCV函数,但我是cuda的新手 . 我的问题:
1-是否有可以使用cuda函数代替openCv函数:
-
split,inRange
-
fillHoles
-
形态学(侵蚀,扩张,闭合)
-
Countours(findContours,moments,boundingRect,approxPolyDP)
-
绘图功能(drawContours,矩形,圆形)
-
kmeans(或任何其他集群功能)
我在Github中找到了一些,但仍未测试任何文档,任何文档都将受到高度赞赏 .
2- cuda只读取.pgm图像格式,是否应该在将.jpg帧复制到设备之前将其转换为?是否无法直接将相机输入读取到GPU全局内存?
3-您是否建议将我的代码保存在openCV中并使用其他库进行并行处理,如openCL?或使用CPU(而不是GPU)使用OpenMP进行并行处理?什么可能是我应该选择的最佳选择?
1 回答
在开始这条路线之前,我建议您完成本教程的前几课:
https://www.udacity.com/course/cs344
然后,您将更好地了解GPU是否适合您的应用程序所需的内容 .
在任何情况下,openCV 1.0主要在C中,而cuda内核在C中,所以也许你可以尝试将其中的一些包装到cuda内核中
干杯