【问题标题】:How can I use opencv in my cuda code?如何在我的 cuda 代码中使用 opencv?
【发布时间】:2013-10-17 09:25:04
【问题描述】:

我已经安装了 opencv 和 Cuda。我已经制作了一些 opencv 代码,现在我想尝试使用 CUDA 让它运行得更快。问题是 opencv GPU 模块不能满足我的要求。如何制作 CUDA 代码以包含和使用与我的 .cpp 文件完全相同的 opencv 库和函数?我包含了所需的 .h 文件 (cv.h highgui.h),这些文件已移动到我的 CUDA 中的“包含”CUDA 文件夹代码但是当我尝试使用 nvcc 编译它时它说 架构 i386 的未定义符号:

“_cvLoadImage”,引用自: _main in tmpxft_000177b6_00000000-14_cuda.o ld:未找到体系结构 i386 的符号 collect2: ld 返回 1 个退出状态

这意味着它不理解这些功能,因此据我所知,这些库没有以正确的方式包含在内。我怎样才能让它工作?

【问题讨论】:

    标签: c opencv cuda gpu libraries


    【解决方案1】:

    据我所知,您不能只在 CUDA 代码中直接包含 OpenCV 函数。 CUDA 有自己的编程方式,为 CPU 编写的代码不能直接在 GPU 上运行。

    我建议您查看documentation 以了解 CUDA 的工作原理。

    如果 OpenCV 的 gpu 版本不能满足您的要求,您可能应该自己实现这些功能。

    您只想在 CPU 上使用 openCV 并使用 CUDA 进行其他计算?

    在这种情况下,我认为您必须创建一个包含 CUDA 函数的 cpp 文件。 您将能够像往常一样在 C 或 C++ 代码中使用包装函数。

    【讨论】:

      【解决方案2】:

      我认为,“使用 OpenCV 和 CUDA 开始使用 GPU 加速的计算机视觉”网络研讨会材料应该会有所帮助。你可以在这里找到它们:link

      【讨论】:

      • 你的链接失效了
      【解决方案3】:

      您最好不要尝试在 opencv 头文件和 nvcc 编译器之间混合使用,这是一种不好的做法。

      Opencv 内置在使用 CMAKE 构建的库中(通常在 Visual Studio 下的 windows 中)

      当您在 nvcc 编译器中包含 opencv 标头时,您必须包含您从 opencv 获得的所有“礼物”,例如:opencv 代码中预期的外部 dll、标头和 extern 函数。

      我发现在你的情况下最合适的解决方案是编写一个在 VS 中编译的代码,来回参考你的 CUDA 代码和 Opencv 的 CUDA(你总是可以使用原语和外部函数)。

      【讨论】:

      • 您发表此评论已经一年了,而您的评论 - 对我来说 - 似乎是唯一真正相关的评论。你介意用“来回引用你的 CUDA 代码和 Opencv 的 CUDA”来说明你的意思吗?
      猜你喜欢
      • 2017-09-11
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 2020-01-09
      • 1970-01-01
      • 2021-09-29
      • 1970-01-01
      • 2017-09-09
      相关资源
      最近更新 更多