linux 下 opencv_contrib 源代码编译方法

linux 下 opencv_contrib 源代码编译方法

建议先看以下文章。

Linux 下 OpenCV 源代码编译方法

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_contribopencv 的额外模块,不能单独编译。

如果需要用到 opencv_contrib 的功能,需要重新在编译 opencv 时,加入 opencv_contrib 模块的编译。

所以不可避免需要重复一些 opencv 编译的步骤,详细参考以下文章:

Linux 下 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 的版本。必须保证两者版本一致,防止引发其它问题。

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 查询已安装库的相关信息 】

你可能感兴趣的:(OpenCV,深度学习,opencv,opencv_contrib,linux,contrib)