本来在win7+VS2017下配置好了opencv3.3.0,但在后来使用过程中才发现,当时安装的是一个基础版的,opencv的许多应用,比如sift检测等,需要单独安装opencv_contrib库才能使用。后来,在win7+VS2017一下折腾很久,最终由于很多辅助软件无法下载而放弃,转到ubuntu18.04系统下配置opencv,安装过程也是各种折腾,所以把配置中出现过的问题及解决办法记录一下。
需要特别说明的是,我的电脑是hp probook440 G2,主系统安装的是win7 SP1,ubuntu18.04作为第二系统,C++使用的IDE是kdevelop。把电脑系统情况说一下,是因为最近在安装ubuntu和配置opencv时,发现win7和win10有很大差异,出现的问题也是五花八门,特别是新的电脑采用UEFI启动模式,让安装双系统、设置系统启动更加麻烦,以后再针对win10安装双系统总结一下。
1、下载源文件
在下载源文件前需要安装好C++编译器,下载源文件时可以在终端利用git下载opencv及opencv_contrib源文件,我使用的下在链接为:
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
编译源文件
遇到问题最多的,就是编译源文件。因此,在编译前建议先看完本小结涉及的内容再操作,避免出错。
首先在opencv文件夹里新建build目录,再进入build目录。
在build目录下输入以下命令,进行编译:
cmake -DCMAKE_BUILD_TYPE=RELEASE
-DCMAKE_INSTALL_PREFIX=/usr/local -DINSTALL_C_EXAMPLES=ON
-DINSTALL_PYTHON_EXAMPLES=ON -DWITH_TBB=ON -DWITH_V4L=ON
-DWITH_QT=ON -DWITH_OPENGEL=ON
-DOPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules
-DOPENCV_ENABLE_NONFREE=ON -DPYTHON_EXECUTABLE=/usr/bin/python
-DBUILD_EXAMPLES=ON ..
遇到的问题
(1)如果直接在opencv文件夹中用cmake命令编译,会报错,提示不允许在源文件中进行编译,同时会在源文件的一些配置文件中记录你在源文件夹下进行编译操作。这时候,需要删除这个记录信息,并新建build,并在该目录下编译。因为我不知道这个信息具体是记录在哪个文件中的,我就是直接删除所有源文件,重新下载一份。
(2)如果在cmake命令中输漏了最后的..标识符,就会提示当前目录下没有CMakeLists. txt文件,这是由于我们现在进入了build目录,所以最后一定加上..这个符号。
(3)在安装过程中,会下载一些第三方依赖,而这些依赖会出线下载超时的情况,因为它采用的是默认的下载地址。解决办法是在网上先下载好这些依赖,然后再到安装文件中去修改这些依赖的默认下载地址,然后再重新输入上述cmake命令。以下是我单独下载的依赖和修改默认安装源地址的方法:
cmake_files文件下载及安装:opencv3_cmake_files
这个依赖位于~/Downloads目录下,需要将他们拷贝到opencv默认安装目录才能生效。因此,将这部分文件拷贝到我下载的源文件的目录下:
~/opencv/opencv_contrib/modules/xfeatures2d/src/
ippicv下载及安装:ippicv
下载的文件存放在~/Downloads目录下,需要修改opencv默认安装源目录。
打开源文件:~/opencv/3rdparty/ippicv/ippicv.cmak,将其中
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}ippicv/"
替换为
"file:~/Downloads/"
face_landmark_model.dat下载及安装:face_landmark_model
类似的,对opencv默认安装源进行修改。
在源文件中打开:~/opencv/opencv_contrib/modules/face/CMakeLinks.txt,将其中的
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${__commit_hash}/"
替换为
"file:~/Downloads/"
至此,我配置完了无法下载的第三方依赖项,然后在重新进入:~/opencv/build利用cmake进行编译,可以顺利通过。
特别说明
(1)DPYTHON_EXECUTABLE=/usr/bin/python这个是你python的安装目录,可以通过which python查询。
(2)DOPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules这个是你下载的opencb_contrib中modules文件夹的地址。
(3)修改第三方依赖项的下载地址时,需要用你下载的第三方依赖存储地址去替换。
2、生成及安装库文件
用sudo make -j8生成库文件。
sudo make -j8
其中的数字8是可用的线程数,可以用npro查询得到。
用sudo make install完成库文件安装。
sudo make install
3、配置库文件
参考网上配置方法,在终端输入以下命令,配置库文件。
sudo sh -c 'echo "/usr/local/lib" >> /etc/ld.so.conf.d/opencv.conf'
sudo ldconfig
4、配置CMakeLists. txt文件
由于上一步的配置对我的电脑无效,所以我用kdevelop新建好工程后,需要在CMakeLists. txt中进行如下配置:
cmake_minimum_required(VERSION 2.8)
project( Hello_World )
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
add_executable( hello_world main.cpp )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
遇到的问题:
1、我当时在配置CMakeLists.txt是把OpenCV写成吧Opencv,导致无法编译,需要注意变量名。
结束
至此,完成opencv全部安装配置。如果大家在自己的系统中还遇到新的问题及解决方法,欢迎留言,方便以后大家查阅。
在配置安装opencv过程中,参考以下资料解决了安装过程中出线的问题:
https://marvae.github.io/2018-09-06/opencv-install/
https://blog.csdn.net/xiangxianghehe/article/details/78780269
ZhouruiSong:OpenCV3.4.5 安装contrib模块
ubuntu16.04 安装opencv IPPICV 和 face_landmark_model.dat下载不下来的问题解决
编译OpenCV以及openc_contrib提示缺少boostdesc_bgm.i文件出错的解决
pencv 解决ippicv下载问题,离线:ippicv_2019_lnx_intel64_general_20180723.tgz