1. 安装依赖库
1.1 必须安装库
sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
1.2 可选安装库
sudo apt-get install python-dev python-numpy python3-dev python3-numpy
sudo apt-get install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
建议以上依赖库都安装,避免后续出现各种依赖问题。
2. 下载 OpenCV 源码
在官网 https://opencv.org/releases/ 选择对应版本的 OpenCV
, 一般选择 Sources
包下载。这里我选择 OpenCV4.0
的安装包。
3. 安装 OpenCV
3.1 解压下载的压缩包
unzip 4.0.0.zip
3.2 创建编译目录
cd opencv-4.0.0
mkdir build && cd build
3.3 开启 OpenCV 的 pkg-config 功能(可选)
修改 OpenCV
的 CMakeLists.txt
文件,在第 342 行将生成 generate.pc file
的选项打开,默认是 OFF
。
OCV_OPTION(OPENCV_GENERATE_PKGCONFIG "Generate .pc file for pkg-config build tool (deprecated)" ON)
编译后会在 /usr/local/lib/pkgconfig
下面生成opencv.pc
文件,最后在 ~/.bashrc
中设置 PKG_CONFIG_PATH
的路径如下:
gedit ~/.bashrc
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
或者在 3.4 步骤中增加 -D OPENCV_GENERATE_PKGCONFIG=YES
命令
-D OPENCV_GENERATE_PKGCONFIG=YES
:OpenCV4 以上版本默认不使用pkg-config
,该编译选项开启生成opencv4.pc
文件,支持pkg-config
功能。
3.4 配置 cmake
cmake \
-D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D BUILD_SHARED_LIBS=ON \
-D WITH_LIBV4L=ON \
-D WITH_V4L=ON \
-D WITH_QT=OFF \
-D BUILD_EXAMPLES=OFF \
-D BUILD_DOCS=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_PNG=ON \
-D BUILD_JASPER=ON \
-D BUILD_JPEG=ON \
-D BUILD_TIFF=ON \
-D WITH_PNG=ON \
-D WITH_JASPER=ON \
-D WITH_TIFF=ON \
-D BUILD_ZLIB=ON \
-D WITH_JPEG=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON ..
其中:
-D CMAKE_INSTALL_PREFIX=/usr/local
表示 默认各部分分别安装在/usr/local/
目录的include/
bin/
lib/
3个文件夹下。BUILD_SHARED_LIBS=ON
为生成动态库标记
3.5 make 编译
make -j$(nproc) // nproc是读取CPU的核心数量
3.6 make 安装
sudo make install
3.7 添加库路径
sudo gedit /etc/ld.so.conf.d/opencv.conf
添加以下内容:
/usr/local/lib
3.8 更新系统库
sudo ldconfig
之后可以在终端输入 pkg-config --libs opencv4
和 pkg-config --cflags opencv4
检验一下,我的输出如下:
wohu@wohu:~/C++$ pkg-config --libs opencv4
-L/usr/local/lib -lopencv_photo -lopencv_dnn -lopencv_stitching -lopencv_objdetect -lopencv_gapi -lopencv_ml -lopencv_video -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_flann -lopencv_videoio -lopencv_imgcodecs -lopencv_imgproc -lopencv_core
wohu@wohu:~/C++$ pkg-config --cflags opencv4
-I/usr/local/include/opencv4/opencv -I/usr/local/include/opencv4
3.9 配置 bash
sudo gedit /etc/bash.bashrc
在最末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
保存,执行如下命令使得配置生效:
source /etc/bash.bashrc
更新
sudo updatedb
4. 验证是否安装成功
进入 opencv-4.0.0/samples/cpp/example_cmake
目录下,官方已经给出了一个 cmake
的 example
,我们可以拿来测试下。按顺序执行:
cd opencv-4.0.0/samples/cpp/example_cmake/
cmake .
make
./opencv_example
即可看到打开了摄像头,在左上角有一个 Hello OpenCV
,即表示配置成功。
也可以通过手动执行编译 cpp
文件,如果编译时 BUILD_SHARED_LIBS=OFF
则需要增加静态库标记 --static
。
g++ -std=c++11 example.cpp -o ex `pkg-config --libs --static opencv4` `pkg-config --cflags opencv4`
然后执行生成的二进制文件达到同样的效果。