在 Cuda 内核中调用 Opencv 函数

标签 c opencv cuda parallel-processing opencl

我打算执行 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/

相关文章:

c - 声明结构时出现语法错误

c - 如何检查IP地址是否对应于C中的localhost

image-processing - OpenCv 构建时不保存图像?

multithreading - OpenMP 可以扩展到包括图形处理器吗?

c++ - 如何使用 LD_PRELOAD 拦截 dlsym 调用?

c - 如何查找结构元素的索引作为 union 中字节数组的索引(在标准 C 中)

c++ - 如何通过 SURF 将模板与原始图像进行匹配?

c++ - 逆离散傅里叶变换输出图像

结构类型的 CUDA __device__

c++ - 先前在 cuda c++ 中定义的外部全局设备变量