opencv代码下载去码云更快:
https://gitee.com/mirrors/opencv
https://gitee.com/mirrors/opencv_contrib
以后想更新了也可以直接在码云上更新,这个镜像站点是每日同步。
需要注意的是,git clone
下来的需要切换一下分支到3.4(如果想用其他版本,切换到相应再编译安装即可)。下面就用命令一步到位:
git clone https://gitee.com/mirrors/opencv.git
cd opencv
git checkout remotes/origin/3.4
git clone https://gitee.com/mirrors/opencv_contrib.git
cd opencv_contrib
git checkout remotes/origin/3.4
上面的命令就把代码下载好了,也切换了3.4版本。接下来编译,参考教程:https://www.cnblogs.com/zzy1024/p/11405641.html
继续在刚刚的终端输入:
# 切换到 open/build目录下
cd .. && mkdir build && cd build
下面这条就是cmake命令,但是不要着急输入,建议先解决下面几个问题(都是网络原因造成的),把该下载的文件下载好,放到指定目录下。
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DWITH_VTK=ON -DWITH_QT=ON -DCMAKE_BUILD_TYPE=Release -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -DENABLE_CXX11=ON -DOPENCV_ENABLE_NONFREE=true -DWITH_EIGEN=ON -DWITH_FFMPEG=ON -DWITH_OPENMP=ON ..
问题1
cmake在安装过程中,网络原因会导致一些文件下载失败,我们可以自行下载安装。这些“问题文件”都集中在/home/xxx/opencv/.cache
目录下,自行下载后,放到该目录下替换即可。
(1) ippicv ,参考教程:手动安装OpenCV下的IPP加速库
核心是找出opencv/3rdparty/ippicv/ippicv.cmake
文件里面的3个关键值,根据自己电脑上这个文件的内容去看,下面3个值是我的:
- 下载目录的地址:https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/
- IPPICV_COMMIT值:a56b6ac6f030c312b2dce17430eef13aed9af274
- 文件名:ippicv_2020_lnx_intel64_20191018_general.tgz
三个值组合起来,就是我的下载地址:
https://raw.githubusercontent.com/opencv/opencv_3rdparty/a56b6ac6f030c312b2dce17430eef13aed9af274/ippicv/ippicv_2020_lnx_intel64_20191018_general.tgz
下载好了之后,直接放到opencv/3rdparty/ippicv/
目录下,ippicv.cmake
文件的第42行的"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"改为"file:///home/xxx/opencv/3rdparty/ippicv/"即可。
(2) face_landmark_model.dat ,下载地址,下载完后放到/home/xxx/opencv/.cache/data
目录下,替换那个还没下载完的文件就行了。参考博客:face_landmark_model.dat 下载地址
问题2
因为网络原因,cmake还会遇到缺少boostdesc_bgm.i等文件的问题,具体原因可以参考:https://blog.csdn.net/u011736771/article/details/85960300和https://github.com/opencv/opencv_contrib/issues/1301
简单起见,可以直接运行一个脚本,用curl
下载相应的文件。脚本放到./opencv
目录下运行即可,内容如下:
#!/bin/bash
cd .cache/xfeatures2d/
cd boostdesc
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_lbgm.i > 0ae0675534aa318d9668f2a179c2a052-boostdesc_lbgm.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_256.i > e6dcfa9f647779eb1ce446a8d759b6ea-boostdesc_binboost_256.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_128.i > 98ea99d399965c03d555cef3ea502a0b-boostdesc_binboost_128.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_064.i > 202e1b3e9fec871b04da31f7f016679f-boostdesc_binboost_064.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_hd.i > 324426a24fa56ad9c5b8e3e0b3e5303e-boostdesc_bgm_hd.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_bi.i > 232c966b13651bd0e46a1497b0852191-boostdesc_bgm_bi.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i > 0ea90e7a8f3f7876d450e4149c97c74f-boostdesc_bgm.i
cd ../vgg
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_120.i > 151805e03568c9f490a5e3a872777b75-vgg_generated_120.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_64.i > 7126a5d9a8884ebca5aea5d63d677225-vgg_generated_64.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_48.i > e8d0dcd54d1bcfdc29203d011a797179-vgg_generated_48.i
curl https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_80.i > 7cd47228edec52b6d82f46511af325c5-vgg_generated_80.i
解决了上面这些问题,再cmake。我这开了VTK和QT的编译选项,不需要的可以删除。
cmake -DCMAKE_INSTALL_PREFIX=/usr/local -DWITH_VTK=ON -DWITH_QT=ON -DCMAKE_BUILD_TYPE=Release -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules -DENABLE_CXX11=ON -DOPENCV_ENABLE_NONFREE=true -DWITH_EIGEN=ON -DWITH_FFMPEG=ON -DWITH_OPENMP=ON ..
再继续编译安装:
make -j2
sudo make install
注意问题,要用SIFT、SURF等有专利的方法,上面 cmake 选项中 -D OPENCV_ENABLE_NONFREE=true
是必选的,SIFT的调用可以参考博客:Opencv3.1.0+opencv_contrib配置及使用SIFT测试