我尝试使用以下命令编写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。
答案 0 :(得分:8)
您必须拥有opencv_contrib和opencv本身的匹配版本。
在opencv github下,转到OpenCV releases并下载3.2.0(它应该在master分支中相同)。
现在,转到https://github.com/opencv/opencv_contrib/releases并下载3.2.0。然后你将有两个版本匹配。
之后,在opencv_contrib主分支的README.md上找到的所有cmake命令都可以正常工作。
答案 1 :(得分:6)
我在protobuf周围得到了同样的错误,那个确切的错误。如果你删除了dnn模块,那么xfeatures2d模块上还会出现另一个错误(因此它们没有配置/构建)。我的问题是,我需要“非自由”的xfeatures2d模块。 :(
问题似乎出现在opencv_contrib,DNN和xfeatures2d模块中,但我不知道如何修复它。即使dnn和xfeatures2d cmake文件传入参数,对ocv_download 的调用似乎也有空输入。我甚至不是cmake的新手,所以我不确定如何进一步排除故障。
我使用最新版本的cmake-gui,3.8.0-rc3在Mac配置XCode和Windows配置Visual Studio时出现此错误。
编辑:我想我已经找到了这个问题。我开了一个issue in the opencv_contrib github。在使用FILENAME作为第一个参数的dnn和xfeatures2d cmake文件中调用了ocv_download,但应该使用PACKAGE。当我将参数更改为PACKAGE时,CMake使用opencv_contrib模块成功配置了opencv。
希望这有帮助! :)
答案 2 :(得分:5)
您可能不会使用相同版本的opencv和opencv_contrib
https://github.com/opencv/opencv_contrib/archive/ <version>
的.zip
https://github.com/opencv/opencv/archive/ <version>
的.zip
如master
或3.2.0
答案 3 :(得分:3)
<强> SHORT 强>
您需要在opencv和opencv_contrib中拥有相同的版本(... / opencv_contrib / modules / ...属于独立的仓库)。
BOTH存储库中的相同版本或最后一次提交。
检查您拥有的版本并移动另一个版本。在您的情况下,我猜您必须更改opencv_contrib的版本,然后使用git或download it from github移至该版本。
git checkout <number_opencv_version i.e. 3.2.0>
<强> LONG 强>
我想作为Ken Lee,您在存储库中没有相同的版本。
正如opened issue中引用的Matt,调用ocv_download时出现问题,因为版本不是opencv-3.1时使用的版本,因此它失败,因为参数不是预期的参数。
当我使用opencv 3.1.0和opencv_contrib的最新版本时,它发生在我身上。您可以逐个更改cmake文件,但在每个仓库中更容易获取正确的版本。
答案 4 :(得分:0)
您的构建文件夹中存在正确的冲突(可能来自您之前的sudo make install
)。我不记得我是如何修复它的,但你可以递归chown
来源和构建文件夹(或chmod
到777)。