opencv编译安装--踩坑

一.官网下载

# opencv
https://opencv.org/releases/
# opencv_contrib
https://github.com/opencv/opencv_contrib/releases
注:opencv与opencv_contrib的版本需要一致,比如4.1.1

二.解压
将下载好的opecv-4.1.1.zip的文件解压到/opt的目录下,将opencv_contrib-4.1.1.tar.gz,解压到opencv-4.1.1的目录下,方便以后的管理。

三.依赖安装

# 需要先更新apt源,否则有一些会无法下载
sudo add-apt-repository 'deb http://security.ubuntu.com/ubuntu xenial-security main'
sudo apt update
[compiler] sudo apt-get install build-essential
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

除了官方说明的,还有一些没有说的坑:

Looking for ccache - not found
# sudo apt install ccache
Could NOT find Jasper (missing:  JASPER_LIBRARIES JASPER_INCLUDE_DIR)
# sudo apt install libjasper1 libjasper-dev
No package 'libavresample' found
# apt-get install libavresample-dev
No package 'libgphoto2' found
# apt-get install libgphoto2-dev
Could not find OpenBLAS include. Turning OpenBLAS_FOUND off
Could not find OpenBLAS lib. Turning OpenBLAS_FOUND off
# apt install libopenblas-base libopenblas-dev
没有解决
Could NOT find Atlas (missing:  Atlas_CLAPACK_INCLUDE_DIR)
# sudo apt install libatlas-base-dev
没有解决
Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE)
# sudo apt install doxygen
Could NOT find JNI (missing:  JAVA_INCLUDE_PATH
# sudo apt install openjdk-8-jdk
VTK is not found. Please set -DVTK_DIR in CMake to VTK build directory, or to VTK install subdirectory with VTKConfig.cmake file
# sudo apt install libvtk6-dev
no package 'gstreamer-video' found
# sudo apt-get install libgstreamer-plugins-base1.0-dev
No package ‘gtk+-3.0’ found
# sudo apt-get install libgtk-3-dev
 Could NOT find HDF5 (missing: HDF5_LIBRARIES HDF5_INCLUDE_DIRS)
 # sudo apt install libhdf5-dev
  Failed to find gflags
 # sudo apt install libgflags-dev 
 Failed to find glog 
 # sudo apt install libgoogle-glog-dev
 Checking for module 'tesseract'
  No package 'tesseract' found
Tesseract:   NO
 # sudo apt install tesseract-ocr
 # sudo apt install libtesseract-dev
 "/usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so" but this file does not exist.
 # sudo apt-get install libvtk6-dev python-vtk6
 #sudo update-alternatives --install /usr/bin/vtk vtk /usr/bin/vtk6 10
 # sudo ln -s /usr/lib/python2.7/dist-packages/vtk/libvtkRenderingPythonTkWidgets.x86_64-linux-gnu.so /usr/lib/x86_64-linux-gnu/libvtkRenderingPythonTkWidgets.so

四.解决网络依赖包(建议使用迅雷下载)

  1. ippicv_2019_lnx_intel64_general_20180723.tgz
    这个包的下载速度非常慢,而且在执行./configure时,会下一次,当你make时,还会重新下载一次!!所以这个坑得跳一下!
# 下载ippicv_2019_lnx_intel64_general_20180723.tgz
https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20180723/ippicv
# 修改opencv里相关配置文件
vim /opt/opencv4.1.1/3rdparty/ippicv/ippicv.cmake
“https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}ippicv/”
# 将网络下载的模式改为本地文件下载的模式
    "file:~/Downloads/" #(仅供参考,根据自己的路径填写)
  1. face_landmark_model.dat
# 下载face_landmark_model.dat
 https://raw.githubusercontent.com/opencv/opencv_3rdparty/8afa57abc8229d611c4937165d20e2a2d9fc5a12/face_landmark_model.dat
 # 修改相应的配置文件
vim opencv_contrib4.1.1/modules/face/CMakeLists.txt
#"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${__commit_hash}/"
# "file:~/Downloads/"

3.其他
将以下文件下载到 opencv_contrib/modules/xfeatures2d/src/

boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_lbgm.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i

或者在opencv_contrib/modules/xfeatures2d/src/下新建一个create.sh,内容如下:

#!/bin/bash
wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_lbgm.i --no-check-certificate
wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_256.i --no-check-certificate
wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_128.i --no-check-certificate
wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_binboost_064.i --no-check-certificate
wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_hd.i --no-check-certificate
wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm_bi.i --no-check-certificate
wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/34e4206aef44d50e6bbcd0ab06354b52e7466d26/boostdesc_bgm.i --no-check-certificate
wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_120.i --no-check-certificate
wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_64.i --no-check-certificate
wget https://raw.githubusercontent.com/opencv/opencv_3rdparty/fccf7cd6a4b12079f73bbfb21745f9babcd4eb1d/vgg_generated_48.i --no-check-certificate

执行:sudo sh create.sh即可

五.编译安装
这里建议使用cmake-gui编译,不要使用命令行去装X了,因为有太多的坑!

cd /opt/opencv-4.1.1
mkdir build
sudo cmake-gui

会出现如下界面:
在这里插入图片描述然后选择编译时需要指定的参数,在OPENCV_EXTRA_MODULES_PATH一栏,填上/opt/opencv-4.1.1/opencv_contrib-4.1.1/modules,指定opencv_contrib的模块。如需要使用CUDA,则将WITH_CUDA,打勾即可;然后点击configure和Generate即可。
耐心等待完成后:

cd build
sudo make -j12
sudo make install 

六.添加一个错误
当编译到99%的时候…可能会出现:

modules/python2/CMakeFiles/opencv_python2.dir/build.make:300: recipe for target 'modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o' failed
make[2]: *** [modules/python2/CMakeFiles/opencv_python2.dir/__/src2/cv2.cpp.o] Error 
解决方法:locate找到hdf5.h   
在/usr/include/hdf5/serial/hdf5.h
在opencv_contrib-4.1.1/modules/hdf/include/opencv2/hdf/hdf5.hpp 文件中修改第40行
添加#include "/usr/include/hdf5/serial/hdf5.h" 
  • 7
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值