1,下载安装Cmake-gui
sudo apt-get cmake
sudo apt-get cmake-qt-gui
采用cmake-gui避免命令行中的参数的输入,可以直接使用gui配置参数。
2,下载opencv-3.4.9
直接使用官网github下载速度太慢,可以将opencv和opencv_contrib在码云中导入自己的仓库中。(这一步需要自己在码云中有账号)。在自己的仓库中可以快速下载openc和contrib。
3,开始编译opencv
此时下载的opencv和opencv_contrib文件最好放置在一个统一的文件夹中可命名为Thirdparty。具体的操作如下:
mkdir Thirdparty
cd Thirdparty
将opencv文件夹放进去,opencv_contrib放进opencv中之后:
cd opencv-3.4.9
mkdir build
cd build
cmake-gui ..
在上图中可以看到源码目录和编译文件夹(build)都是已经自动填充的,之后点击configure按钮,选择Unix Makefiles,选择Use default native compilers(默认),然后点击Finish。此时就会出现如上图所示红色部分的参数,对于参数中:
- CMAKE_BUILD_TYPE 值处输入RELEASE。
- CMAKE_INSTALL_PREFIX显示了默认的安装目录,此处如果安装多版本的opencv时在此修改路径。
- OPENCV_EXTRA_MODULES_PATH处是添加扩展模块的,路径选中opencv_contrib下的modules文件夹。
- OPENCV_ENABLE_NONFREE 选中(SURF 专利问题)
点击Generate生成配置文件,这一步应该比较快就完成了。此时在控制台由于网络原因就回出现长时间连接无法获取文件的情况,这些都会标红,在后期会造成opencv编译失败。
此处的解决方法:
1,利用4g网络进行处理
连接wifi或者利用自己手机制作一个网络。利用手机网络基本上可以获取缺失的文件,之后控制台不出现报错信息就可以进行编译处理了。
2,可以将缺失的文件直接放入对应的目录中,修改相应的文件路径,如下在编译中的操作。
编译步骤如下:
make -j4
sudo make install
出现编译失败的情况:
/home/Thirdparty/opencv-3.4.9/opencv_contrib/modules/xfeatures2d/src/boostdesc.cpp:654:37: fatal error: boostdesc_bgm.i: No such file or directory
compilation terminated.
modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/build.make:451: recipe for target 'modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc.cpp.o' failed
make[2]: *** [modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/src/boostdesc.cpp.o] Error 1
CMakeFiles/Makefile2:6726: recipe for target 'modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/all' failed
make[1]: *** [modules/xfeatures2d/CMakeFiles/opencv_xfeatures2d.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
出现这种问题原因是网络原因无法将boostdesc_bgm.i等文件下载至对应的路径中,我的在上方错误信息可知路径是/home/Thirdparty/opencv-3.4.9/opencv_contrib/modules/xfeatures2d/src
完成文件拷贝后可以再进行make -j4的操作,此时出现失败情况:
/home/Thirdparty/opencv-3.4.9/modules/stitching/include/opencv2/stitching/detail/matchers.hpp:52:42: fatal error: opencv2/xfeatures2d/cuda.hpp: No such file or directory
这种情况的出现是因为在matchers.hpp:52:42的文件引用中的路径无法找到cuda.hpp.此时可以完成对于detail文件的cmakelists.txt的路径添加,在opencv-3.4.9/modules/stitching的cmakelists.txt添加自己的路径信息:
set(the_description "Images stitching")
#添加自己的路径如下
INCLUDE_DIRECTORIES("/home/Thirdparty/opencv-3.4.9/opencv_contrib/modules/xfeatures2d/include")
if(HAVE_CUDA)
ocv_warnings_disable(CMAKE_CXX_FLAGS -Wundef -Wmissing-declarations -Wshadow -Wstrict-aliasing)
endif()
之后再出现类似的也可以如此解决。