sudo apt update
sudo apt-get install libcanberra-gtk-module
sudo apt-get install pkg-config
sudo apt install -y cmake g++ wget unzip
sudo apt-get install build-essential pkg-config libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
其他相关依赖可参考install-opencv
# 2. INSTALL THE DEPENDENCIES
# Build tools:
sudo apt-get install -y build-essential cmake
# GUI (if you want GTK, change 'qt5-default' to 'libgtkglext1-dev' and remove '-DWITH_QT=ON'):
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 pylint python-numpy \
python3-dev python3-tk pylint3 python3-numpy flake8
# Java:
sudo apt-get install -y ant default-jdk
# Documentation and other:
sudo apt-get install -y doxygen unzip wget
git/gitee下载好 opencv源码后,
进入 opencv目录执行: git tag
然后选择你想要的版本(这里安装 4.5.4版本)执行命令:
git checkout 4.5.4
1.下载ade源码后,参考DownloadADE.cmake中的变量定义,把源码的文件夹重命名,然后压缩并重命名。
我下载的源码压缩包名字ade-release_0.1.zip,解压后名字是ade-release_0.1
将解压后的文件夹参考DownloadADE.cmake中的变量定义,
#set(ade_md5 “b624b995ec9c439cbc2e9e6ee940d3a2”) //comment out
set(ade_md5 “e52f69b89f034adbfba00608949db1ae”) //new MD5 value
这里
我的 ade源码位置 /home/user/opencv4/
"https://github.com/opencv/ade/archive/“替换成"file:///home/user/opencv4/”
进入opencv源码 新建 build文件夹 mkdir build ..
进入build 文件夹执行cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local
等待编译完成之后执行make -j4
编译后安装执行sudo make install
1.打开文件 /etc/ld.so.conf,在最后一行加上 /usr/local/lib
执行 ldconfig
命令
ldconfig这个程序,位于/sbin下,它的作用是将文件/etc/ld.so.conf列出的路径下的库文件缓存到/etc/ld.so.cache以供使用,因此当安装完一些库文件,或者修改/etc/ld.so.conf增加了库的新的搜索路径,需要运>行一下ldconfig,使所有的库文件都被缓存到文件/etc/ld.so.cache中,如果没做,可能会找不到刚安装的库
sudo gedit /etc/ld.so.conf
2.修改bash.bashrc
执行 sudo gedit /etc/bash.bashrc
末尾添加PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH
执行生效 source /etc/bash.bashrc
检查成功 pkg-config opencv --modversion
第二条命令 如果找不到可以试试
sudo apt-get install libopencv-dev
这一步很有必要,否则后边测试程序找不到opencv
3.如果没有opencv.pc,那么就手动创建它
cd /usr/local/lib/pkgconfig
touch opencv.pc
sudo gedit opencv.pc
文件内容
prefix=/usr/local
exec_prefix=${prefix}
includedir=/usr/local/include
libdir=/usr/local/lib
Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.4.0
Libs: -L${exec_prefix}/lib -lopencv_stitching -lopencv_superres -lopencv_videostab -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dpm -lopencv_face -lopencv_photo -lopencv_freetype -lopencv_fuzzy -lopencv_hdf -lopencv_hfs -lopencv_img_hash -lopencv_line_descriptor -lopencv_optflow -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_surface_matching -lopencv_tracking -lopencv_datasets -lopencv_text -lopencv_dnn -lopencv_plot -lopencv_xfeatures2d -lopencv_shape -lopencv_video -lopencv_ml -lopencv_ximgproc -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_flann -lopencv_xobjdetect -lopencv_imgcodecs -lopencv_objdetect -lopencv_xphoto -lopencv_imgproc -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir}
#include
#include
using namespace cv;
using namespace std;
int main(int argc, char** argv )
{
Mat image = imread("test.png");
namedWindow("test",CV_WINDOW_KEEPRATIO);
imshow("test", image);
waitKey(0);
return 0;
}
编译运行脚本
#!/bin/bash
g++ test.cpp -o test.out $(pkg-config --cflags --libs opencv)
./test.out
或者
g++ test.cpp -o test.out $(pkg-config --cflags --libs opencv)
注解:pkg-config 是前文中已经安装的程序,一个包管理工具,可以用于获得某一个库/模块的所有编译相关的信息,pkg-config --cflags --libs opencv 将opencv包的头文件和库信息传递给编译器。不需要再手动去指定头文件和库路径
g++ test.cpp -o test.out -I /usr/include/opencv2 -l /usr/local/lib/opencv
–libs,查看库信息。
–cflags,查看头文件信息。
pkg-config的信息来自 (1) 系统的/usr/lib下的所有 .pc文件。 (2)
PKG_CONFIG_PATH环境变量所指向的路径下的所有.pc文件。
运行程序
./test.out