linux 下 opencv_contrib 源代码编译方法

linux 下 opencv_contrib 源代码编译方法

建议先看以下文章。

Linux 下 OpenCV 源代码编译方法

opencv_contrib 是 OpenCV 基于多种原因(版权问题等)剥离出来的一系列主要与人工智能相关的计算机视觉功能模块。

可以拓展 OpenCV 的功能,但使用者需要注意一些不同开源协议的算法的要求。

主要提供的功能有:

模块名称
arucoAR 增强现实模块
bgsegm背景分割
bioinspired生物视觉
ccalib自定义标定
cnn_3dobjCNN 物体识别和姿态估计
cvv弹窗 GUI
datasets数据集 Reader
dnn_objdetectDNN 物体识别
dnns_easily_fooled糊弄 DNN
dpmDPM 物体识别
face人脸识别
fuzzy模糊变化
freetypeFreeType
hdfHDF
ine_descriptor线条描述子
matlabMatlab
optflow光流 Optflow
ovis3D 可视化
plot绘图
reg图像注册
rgbdRGBD 模块
saliency显著性 saliency
sfm三维重建
stereo三维描述子
structured_light结构光
surface_matching平面配准
textOCR 光学文字识别
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 查询已安装库的相关信息

  • 1
    点赞
  • 22
    收藏
  • 打赏
    打赏
  • 1
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:精致技术 设计师:CSDN官方博客 返回首页
评论 1

打赏作者

ZONE画派

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值