linux 下 opencv_contrib 源代码编译方法
建议先看以下文章。
opencv_contrib 是 OpenCV 基于多种原因(版权问题等)剥离出来的一系列主要与人工智能相关的计算机视觉功能模块。
可以拓展 OpenCV 的功能,但使用者需要注意一些不同开源协议的算法的要求。
主要提供的功能有:
| 模块 | 名称 |
|---|---|
| aruco | AR 增强现实模块 |
| bgsegm | 背景分割 |
| bioinspired | 生物视觉 |
| ccalib | 自定义标定 |
| cnn_3dobj | CNN 物体识别和姿态估计 |
| cvv | 弹窗 GUI |
| datasets | 数据集 Reader |
| dnn_objdetect | DNN 物体识别 |
| dnns_easily_fooled | 糊弄 DNN |
| dpm | DPM 物体识别 |
| face | 人脸识别 |
| fuzzy | 模糊变化 |
| freetype | FreeType |
| hdf | HDF |
| ine_descriptor | 线条描述子 |
| matlab | Matlab |
| optflow | 光流 Optflow |
| ovis | 3D 可视化 |
| plot | 绘图 |
| reg | 图像注册 |
| rgbd | RGBD 模块 |
| saliency | 显著性 saliency |
| sfm | 三维重建 |
| stereo | 三维描述子 |
| structured_light | 结构光 |
| surface_matching | 平面配准 |
| text | OCR 光学文字识别 |
| tracking | 目标跟踪 |
| xfeatures2d | 额外 2D 特征 |
| ximgproc | 扩展图像处理 |
| xobjdetect | 物体检测 |
| xphoto | 照片处理 |
编译方式
opencv_contrib 是 opencv 的额外模块,不能单独编译。
如果需要用到 opencv_contrib 的功能,需要重新在编译 opencv 时,加入 opencv_contrib 模块的编译。
所以不可避免需要重复一些 opencv 编译的步骤,详细参考以下文章:
改进的 install-opencv-and-contrib.sh 脚本如下:
# VERSION TO BE INSTALLED
OPENCV_VERSION='3.4.5'
OPENCV_CONTRIB=1
OPENCV_DIR_NAME=opencv-${OPENCV_VERSION}
CONTRIB_DIR_NAME=opencv_contrib-${OPENCV_VERSION}
CURRENT_DIR=`pwd`
CONTRIB_MODULES_DIR="${CURRENT_DIR}/${CONTRIB_DIR_NAME}/modules"
FLAGS=
FLAGS="${FLAGS} -DBUILD_JAVA=OFF"
FLAGS="${FLAGS} -DBUILD_opencv_java=OFF"
FLAGS="${FLAGS} -DCMAKE_CXX_COMPILER=g++"
FLAGS="${FLAGS} -DCMAKE_C_COMPILER=gcc"
FLAGS="${FLAGS} -DBUILD_TESTS=OFF"
# 1. KEEP UBUNTU OR DEBIAN UP TO DATE
sudo apt-get -y update
# sudo apt-get -y upgrade # Uncomment this line to install the newest versions of all packages currently installed
# sudo apt-get -y dist-upgrade # Uncomment this line to, in addition to 'upgrade', handles changing dependencies with new versions of packages
# sudo apt-get -y autoremove # Uncomment this line to remove packages that are now no longer needed
# 2. INSTALL THE DEPENDENCIES
# Build tools:
sudo apt-get install -y build-essential cmake
# GTK
sudo apt-get install -y libgtk2.0-dev
# GUI (if you want to use GTK instead of Qt, replace 'qt5-default' with 'libgtkglext1-dev' and remove '-DWITH_QT=ON' option in CMake):
sudo apt-get install -y qt5-default libvtk6-dev
# Media I/O:
sudo apt-get install -y zlib1g-dev libjpeg-dev libwebp-dev libpng-dev libtiff5-dev libjasper-dev libopenexr-dev libgdal-dev
# Video I/O:
sudo apt-get install -y libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev yasm libopencore-amrnb-dev libopencore-amrwb-dev libv4l-dev libxine2-dev
# Parallelism and linear algebra libraries:
sudo apt-get install -y libtbb-dev libeigen3-dev
# Python:
sudo apt-get install -y python-dev python-tk python-numpy python3-dev python3-tk python3-numpy
# Java:
sudo apt-get install -y ant default-jdk
# Documentation:
sudo apt-get install -y doxygen
# 3. INSTALL THE LIBRARY
# install unzip wget
sudo apt-get install -y unzip wget
wget https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip -O ${OPENCV_DIR_NAME}.zip
unzip -o ${OPENCV_DIR_NAME}.zip
rm ${OPENCV_DIR_NAME}.zip
if [ ${OPENCV_CONTRIB} -eq 1 ]; then
wget https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip -O ${CONTRIB_DIR_NAME}.zip
unzip -o ${CONTRIB_DIR_NAME}.zip
rm ${CONTRIB_DIR_NAME}.zip
FLAGS="${FLAGS} -DOPENCV_EXTRA_MODULES_PATH=${CONTRIB_MODULES_DIR}"
fi
# mv opencv-${OPENCV_VERSION} OpenCV
# cd OpenCV
cd ${OPENCV_DIR_NAME}
mkdir -p build
cd build
echo "cmake ${FLAGS} .."
cmake ${FLAGS} ..
make -j4
sudo make install
sudo ldconfig
OPENCV_VERSION:设置 opencv 和 opencv_contrib 的版本。必须保证两者版本一致,防止引发其它问题。
其它 cmake 参数参考此文章:Linux 下 OpenCV 源代码编译方法
-DOPENCV_EXTRA_MODULES_PATH:用于指定额外 opencv 模块的 modules 路径(主要是 opencv_contrib 模块)
直接将上述命令保存于 install-opencv-and-contrib.sh 文件
(安装前请卸载原有的 opencv 版本:sudo apt-get remove libopencv*)
使用命令:
bash install-opencv-and-contrib.sh
即可完成全自动 opencv , opencv_contrib 的下载和编译安装。
通过 pkg-config --libs --cflags opencv 查看依赖,即可知道是否安装成功。
【 pkg-config 命令,可以查看文章:pkg-config 查询已安装库的相关信息 】

1058

被折叠的 条评论
为什么被折叠?



