Ubuntu OpenCV not compiling



我正在尝试使用以下命令编译 OpenCV 3.2:

1.
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DCMAKE_INSTALL_PREFIX=/usr/local/ -DOPENCV_EXTRA_MODULES_PATH=/home/matteo/Desktop/Xilinx/OpenCV/source/opencv_contrib/modules/ /home/matteo/Desktop/Xilinx/OpenCV/source/opencv-3.2.0/
2.
make -j7 # runs 7 jobs in parallel
3.
sudo make install

你能解释一下为什么我得到

...
........
...........
........................
-- VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory, or to VTK install subdirectory with VTKConfig.cmake file
-- Caffe:   NO
-- Protobuf:   NO
-- Glog:   NO
-- Downloading ...
CMake Error at cmake/OpenCVUtils.cmake:1043 (file):
file DOWNLOAD cannot open file for write.
Call Stack (most recent call first):
../opencv_contrib/modules/dnn/cmake/OpenCVFindLibProtobuf.cmake:32 (ocv_download)
../opencv_contrib/modules/dnn/CMakeLists.txt:5 (include)

CMake Error at cmake/OpenCVUtils.cmake:1047 (message):
Failed to download .  Status=
Call Stack (most recent call first):
../opencv_contrib/modules/dnn/cmake/OpenCVFindLibProtobuf.cmake:32 (ocv_download)
../opencv_contrib/modules/dnn/CMakeLists.txt:5 (include)

-- Configuring incomplete, errors occurred!

我正在使用 Ubuntu 16.04 .我已经在系统上安装了OpenCV:也许我以错误的方式取消了它?我记得使用上面使用的相同命令编译 OpenCV 3.2。

您必须具有匹配的opencv_contrib和 opencv 本身的版本。

在 opencv github 下,转到 OpenCV 版本并下载 3.2.0(在 master 分支中应该相同)。

现在,转到 https://github.com/opencv/opencv_contrib/releases 并下载 3.2.0。然后,您将使两个版本匹配。

之后,在主分支 README.md 上找到的所有 cmake 命令opencv_contrib应该可以正常工作。

我在protobuf周围得到同样的错误,确切的错误。如果您删除 dnn 模块(因此它们不会被配置/构建),xfeatures2d 模块上也会有另一个错误。我的问题是,我需要"非自由"xfeatures2d模块。:(

问题似乎出在opencv_contrib、DNN 和 xfeatures2d 模块中,但我不确定如何解决它。 对ocv_download的调用似乎有空输入,即使 DNN 和 xFeatures2D cmake 文件正在传递参数。我什至不是 cmake 的新手,所以我不确定如何进一步排除故障。

我在Mac上为XCode配置和Windows为Visual Studio配置时都收到此错误,使用最新版本的cmake-gui,3.8.0-rc3。


编辑:我想我已经找到了这个问题。我在opencv_contrib github中打开了一个问题。在 dnn 和 xfeatures2d cmake 文件中有一个调用 ocv_download,它使用 FILENAME 作为第一个参数,但应该改用 PACKAGE。当我将参数更改为 PACKAGE 时,CMake 成功地使用 opencv_contrib 模块配置 opencv。

希望这有帮助! :)

您可能不使用相同的 opencv 版本和opencv_contrib

https://github.com/opencv/opencv_contrib/archive/<version>.zip https://github.com/opencv/opencv/archive/<version>.zip

喜欢master3.2.0

short

您需要在opencv和opencv_contrib中具有相同的版本(.../opencv_contrib/modules/...属于独立存储库)。

两个存储库中的相同版本或最后一次提交。

检查您拥有的版本并移动另一个版本。在您的情况下,我想您必须更改opencv_contrib的版本,然后使用 git 移动到版本或从 github 下载它。

git checkout <number_opencv_version i.e. 3.2.0>

我想作为 Ken Lee,您在存储库中没有相同的版本。

正如 Matt 在打开的问题中提到的那样,调用 ocv_download 存在问题,因为该版本不是 opencv-3.1 时使用的版本,因此它失败了,因为参数不是预期的。

当我使用 opencv 3.1.0 和opencv_contrib的最新版本时,它发生在我身上。您可以逐个更改 cmake 文件,但在每个存储库中获取正确的版本更容易。

构建文件夹中存在正确的冲突(可能是由以前的sudo make install引起的)。我不记得我是如何修复它的,但您可以尝试递归chown源文件夹和构建文件夹(或chmod到 777)。

最新更新