我需要帮助来编译那段code:
我的项目需要一些东西,但我无法编译它。
我从源头编译整个'OpenCV'库,按照说明there:
但是存在很大的问题:
1 - 在包含文件中,在目录"opencv2/stitching"
中,没有名为“detail”的子目录(源文件中有一个,但/usr/local/include/opencv2/stitching
中没有编译版本)。< / p>
2 - 在当前版本中,在示例中,在stitching_detailed.cpp中,对此没有任何修改!
另外,编译时我没有任何错误......只有未使用变量的警告...
更多信息:
所以,我正在使用它来编译:
g ++ stitching_detail.cpp -o stitcher
pkg-config --libs opencv
-lopencv_stitching -lopencv_gpu
但opencv_stitching中有很多错误,如:
未定义引用`cv :: gpu :: buildWarpCylindricalMaps(cv :: Size_,cv :: Rect_,cv :: Mat const&amp;,cv :: Mat const&amp;,float,cv :: gpu :: GpuMat&amp ;,, cv :: gpu :: GpuMat&amp;,cv :: gpu :: Stream&amp;)'
有没有办法删除opencv_gpu的依赖项?因为我现在唯一的问题是由此引起的!
重要:
在配置中,指定我想在没有CUDA的情况下编译OpenCV,我显然有以下第三方信息:
- 其他第三方图书馆:
- 使用IPP:否
- 使用TBB:否
- 使用Cuda:NO
- 使用特征:否
答案 0 :(得分:2)
您收到此错误是因为您编译了没有CUDA支持的库,并且有些函数需要它。 编译器试图链接cv :: gpu函数,如果在CMAKE解决方案生成期间不使用CUDA标志,则不会在编译库中添加它们。 要避免此行为,您有两种选择:
如果您在Windows环境中,可以使用cuda支持轻松下载预编译的库并测试代码。如果您没有CUDA支持,可能代码将在cv :: gpu函数期间崩溃。
第二个选项很容易做到。代码已声明使用命名空间cv ,因此您只需查找所有gpu ::(function_name)调用并将其删除即可。请注意不要使用--try_gpu参数,因为我没有读取所有代码,这可能会在执行期间调用一些未定义的行为。