OpenCV的组件很多都被墙了,而且编译涉及内容较多会产生一些问题,这里进行一一讲解
环境准备(CentOS7)
::: warning
其中 ffmpeg
ffmpeg-devel
为必要依赖
如果出现 No package ‘gtk±3.0’ found
则需要检查gtk3-devel
是否安装成功
:::
sudo yum -y install epel-release git gcc gcc-c++ cmake3 qt5-qtbase-devel python34 python34-devel python34-pip python python-devel python-pip python-devel numpy python34-numpy gtk2-devel gtk3-devel libpng-devel jasper-devel openexr-devel libwebp-devel libjpeg-turbo-devel freeglut-devel mesa-libGL mesa-libGL-devel libtiff-devel libdc1394-develtbb-devel eigen3-devel boost boost-thread boost-devel libv4l-devel gstreamer-plugins-base-devel
sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro
sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm
sudo yum -y install ffmpeg ffmpeg-devel
环境准备(ubuntu)
::: warning
其中 ffmpeg
ffmpeg-devel
为必要依赖
如果出现 No package ‘gtk±3.0’ found
则需要检查gtk3-devel
是否安装成功
:::
::: tip
仅有此条适用于Ubuntu16.04
其他部分均基于Ubuntu18.04
sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev libgtk-3-dev libgtkglext1-dev libgstreamer1.0-dev libavresample-dev libgphoto2-dev libopenblas-dev libatlas-dev doxygen libgstreamer-ocaml-dev libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-base0.10-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer0.10-dev libgstreamer1.0-dev libgstreamermm-1.0-dev tesseract-ocr-dev liblept5 libleptonica-dev liblapacke-dev python3-numpy libv4l-dev python3-numpy python3-pip python-pip libprotobuf-dev libhdf5-dev libgflags-dev
:::
适用于Ubuntu18.04
的环境依赖
sudo apt-get install -y build-essential git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev libgtk-3-dev libgtkglext1-dev libgstreamer1.0-dev libavresample-dev libgphoto2-dev libopenblas-dev libatlas-base-dev doxygen libgstreamer-ocaml-dev libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer1.0-dev libgstreamermm-1.0-dev libtesseract-dev liblept5 libleptonica-dev liblapacke-dev libgstreamer-opencv1.0-0 libgstreamer-plugins-bad1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamerd-3-dev libgstreamermm-1.0-dev libv4l-dev libprotobuf-dev libhdf5-dev libgflags-dev python3-numpy cmake
源码获取(Git)
::: tip
使用git checkout master
来获取master
分支的源代码
:::
使用命令
获取
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout master
cd ..
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout master
cd ..
源码获取(离线)
::: tip
结合国内使用情况,已经将opencv
以及opencv_contrib
还有涉及的离线包
(已经放置于openc/.cache
内).cache
文件夹不可见
[隐藏
]
:::
==点此前往获取OpenCV_Offline包==
获取到安装包
后,参考命令(建议将文件下载到 /
内)
unzip OpenCV_Offline.zip
即可获得opencv
以及opencv_contrib
文件夹
编译安装OpenCV
创建build
cd opencv/
mkdir build
cd build
使用cmake
配置编译过程
==常规编译==需要在build
路径下执行
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules/ -D WITH_TBB=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D OPENCV_GENERATE_PKGCONFIG=ON ..
==生成静态库==需要在build
路径下执行
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -DBUILD_SHARED_LIBS=OFF -DBUILD_TESTS=OFF -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules/ -D WITH_TBB=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D OPENCV_GENERATE_PKGCONFIG=ON ..
在cmake
完成后,执行make
和make install
==命令解析==
make -j核心数
make -j$(nproc)
make install