【问题标题】:Need help compiling that example from OpenCV需要帮助从 OpenCV 编译该示例
【发布时间】:2012-02-25 08:27:10
【问题描述】:

我需要帮助来编译那段code

它有一些我的项目需要的东西,但我无法编译它。

我按照there 的说明从源代码编译整个“OpenCV”库:

但是有很大的问题:

1 - 在包含文件中,在目录"opencv2/stitching" 中,没有名为“detail”的子目录(在源文件中有一个,但在/usr/local/include/opencv2/stitching 的编译版本中没有)。

2 - 在当前版本中,在示例中,在stitching_detailed.cpp 中,没有任何修改!

另外,我在编译时没有任何错误...只有未使用变量的警告...

更多信息:

所以,我用这个来编译:

g++stitching_detail.cpp -o 缝合器pkg-config --libs opencv -lopencv_stitching -lopencv_gpu

但是opencv_stitching有很多错误比如:

未定义对 `cv::gpu::buildWarpCylindricalMaps(cv::Size_, cv::Rect_, cv::Mat const&, cv::Mat const&, float, cv::gpu::GpuMat&, cv:: gpu::GpuMat&, cv::gpu::Stream&)'

有没有办法移除对 opencv_gpu 的依赖?因为我现在唯一的问题就是这个!

重要提示:

在配置中指定我要编译OpenCV不带CUDA,我明明有以下第三方信息:

-- 其他第三方库:

-- 使用 IPP:否

-- 使用待定:否

-- 使用 Cuda:否

-- 使用特征:否

【问题讨论】:

    标签: opencv compilation


    【解决方案1】:

    您收到此错误是因为您在没有 CUDA 支持的情况下编译了库,并且有些函数需要它。 编译器正在尝试链接 cv::gpu 函数,如果在生成 CMAKE 解决方案期间不使用 CUDA 标志,它们不会添加到编译库中。 为避免这种行为,您有两种选择:

    1. 使用 CUDA 标志重新编译 OpenCV。 (您需要安装所有 CUDA 依赖优先)
    2. 从示例代码中删除所有 cv::gpu 调用。

    如果您在windows环境下,您可以轻松下载支持cuda的预编译库并测试代码。如果您没有 CUDA 支持,则代码可能会在 cv::gpu 函数期间崩溃。

    第二个选项很容易做到。代码已声明 using namespace cv,因此您只需查找所有 gpu::(function_name) 调用并将其删除。请注意不要使用 --try_gpu 参数,因为我没有阅读所有代码,这可能会在执行期间调用一些未定义的行为。

    【讨论】:

    • 即使我的机器不支持CUDA...是否有可能有依赖关系?
    • 显然,即使您的 PC 不支持 CUDA,您也可以安装该工具包……只是希望它能够正确重新编译!
    • 好吧,我从来没有尝试在没有 CUDA 硬件的情况下编译代码,但我看不出不能编译它的理由。正如我的回答中提到的,即使您编译代码,您的程序也可能会在任何 gpu 函数调用时崩溃。哦,我已经编辑了我的答案。我在手机上输入了它,但无法写出更可靠的答案。
    • 谢谢...它现在正在编译...它没有运行罚款,因为某处存在非法指令...但至少它正在编译!
    • 所以,它不能在我的工作中运行,但在家里,它运行良好......所以,我需要一台更好的计算机来完成我的工作!非常感谢您的帮助。