我打算执行 4 张图像的全景图。为此,我打算处理图像 1 和 2、2 和 3,然后处理 3 和 4 并获得单应性,然后拼接图像。
现在,可以并行获取每个图像中的 SIFT 特征。因此,在 GPU 上使用 CUDA,我打算在将图像传递给内核后在每个内核中调用 Surffeatureextractor 和描述符。
现在,我想知道是否可以在 cuda 内核中编写一个 opencv 函数?例如,如果我的内核是
extract_sift(image, *keypoints, *descriptor)
{
//I want to call sift descriptor from an external opencv lib here }
请让我知道该怎么做,或将我引导至某些可帮助我做到这一点的链接。
最佳答案
你问的是不可能的。如果您了解 OpenCL 架构,就会很清楚为什么:内核在不同的设备上运行,具有不同的内存、架构等,并且与它们的所有通信都是通过缓冲区。您可以将描述符作为结构(更准确地说是指向该结构的指针)传递给内核,前提是您还在 OpenCL 代码中声明了相同的结构。
关于在 Cuda 内核中调用 Opencv 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10185267/