【问题标题】:Unable to build opencv_contrib modules on linux无法在 linux 上构建 opencv_contrib 模块
【发布时间】:2026-01-08 11:00:02
【问题描述】:

我正在尝试使用 Linux 上 opencv_contrib 中的 xfeatures2d 模块构建 OpenCV,但我无法构建任何额外的模块。这是我尝试过的(我基本上按照我在网上和opencv_contrib的README文件中找到的说明进行操作):

  1. 从 github 下载 opencv 和 opencv_contrib:

$ git clone https://github.com/opencv/opencv.git

$ git clone https://github.com/opencv/opencv_contrib.git

  1. 创建构建目录:

$ cd ~/opencv

$ mkdir 释放

$ cd 发布

  1. 运行 cmake:

$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local –D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -D WITH_LIBV4L=on -D WITH_GSTREAMER=on -D WITH_OPENGL=on -D WITH_VTK= on -D BUILD_EXAMPLES=ON -D WITH_GTK=on -D WITH_QT=on ..

我已经指定了 opencv_contrib/modules 的路径(也尝试了绝对路径,但没有区别),我确信这是正确的路径。 CMake 似乎运行没有错误,但它不想构建额外的模块。这是 cmake 的输出:

-- OpenCV 模块:

-- 待建:core flann imgproc ml objdetect photo video dnn imgcodecs shape videoio highgui superres ts features2d calib3d java 拼接videostab python2

-- 禁用:世界

-- 被依赖项禁用:-

-- 不可用:cudaarithm cudabgsegm cudacodec cudafeatures2d cudafilters cudaimgproc cudalegacy cudaobjdetect cudaoptflow cudastereo cudawarping cudev python3 viz

我只有“标准”模块,但没有来自 opencv_contrib... 如果我此时构建库,我只会得到“标准”库(如预期的那样)。我尝试通过添加 -D BUILD_opencv_xfeatures2d=ON 来显式启用 xfeatures2d,并且我也尝试不构建示例但没有任何效果。

有人知道我做错了什么吗?

感谢您的帮助。

【问题讨论】:

    标签: c++ linux opencv


    【解决方案1】:

    我从几周前开始使用 OpenCV 3.2 的源代码,所以我从 github(这次是 OpenCV 3.3)重新下载并按照我在第一篇文章中描述的相同步骤重新安装,它成功了!

    也许我有一些“糟糕”的 OpenCV 3.2 版本,存在一些偷偷摸摸的不兼容问题。

    【讨论】: