opencv_contrib额外模块,经过测试,使用成熟后才会加入到opencv:https://github.com/opencv/opencv_contrib/
1.安装 OpenCV 所需要的依赖项目
# 1、安装 cmake g++ wget unzip
sudo apt update && sudo apt install -y cmake g++ wget unzip
# 2、安装 opencv 依赖的库(通过会依赖某些图片编码库,视频编码库等)
sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libpng-dev libswscale-dev libtiff5-dev pkg-config libtbb2 # tbb2 为英特尔线程构建模块
# 3、安装 opencv-python 依赖库
sudo apt install python3-dev python3-numpy # opencv-python 支持
# 4、中文字体支持需要的依赖
sudo apt install libfreetype-dev libharfbuzz-dev
2.构建核心模块
# Download and unpack sources
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.5.5.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.5.5.zip
unzip opencv.zip
unzip opencv_contrib.zip
# Create build directory and switch into it
cd opencv-4.5.5
mkdir -p build && cd build
# 使用 CMake 命令配置 OpenCV 构建
cmake -j16 \
-D CMAKE_BUILD_TYPE=RELEASE \ # 表示编译发布版本
-D CMAKE_INSTALL_PREFIX=/usr/local \ # 表示生成动态库的安装路径,可以自定义
-D WITH_GTK=ON \ # 为了防止 GTK 配置失败:即安装了libgtk2.0-dev依赖,还是报错未安装
-D OPENCV_GENERATE_PKGCONFIG=ON \ # 表示自动生成 OpenCV 的 pkgconfig 文件,否则需要自己手动生成
.. # 告诉编译器 CmakeList.txt 来自上一层文件夹
# 完整命令如下
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.5.5/modules -D WITH_FREETYPE=ON -D WITH_GTK=ON -D OPENCV_GENERATE_PKGCONFIG=ON ..
当前使用:
cmake -D CMAKE_BUILD_TYPE=DEBUG -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_FREETYPE=ON -D WITH_GTK=ON -D OPENCV_GENERATE_PKGCONFIG=ON ..
# 其它常用选项
-D WITH_FREETYPE=ON \ # 支持中文字体
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=ON \
-D WITH_CUDA=ON \
-D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D CUDA_ARCH_BIN=6.1 \
# 指定GPU算力,在NVIDIA官网查询 https://developer.nvidia.com/cuda-gpus#compute
# 1080/1080TI 是 6.1,TITAN X 是 5.2,2080/2080TI 是 7.5,3080/3080TI 是 8.6
-D WITH_CUBLAS=1 \
-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.5.5/modules \ # opencv 扩展模块
-D BUILD_SHARE_LIBS=OFF # 编译静态链接库
# 开始编译(若需要重新编译 cmake,需要先将 build 目录下的文件删除后再操作)
make -j2
3.安装 OpenCV
sudo make install
4.配置动态库和 pkgconfig 环境
4.1配置动态库环境
# 打开文件(可能为空文件)
sudo vim /etc/ld.so.conf.d/opencv4.conf
# 在该文件末尾加上 OpenCV 的 lib 路径,保存退出
/usr/local/lib
# 使配置的动态库路径生效
sudo ldconfig
4.2配置 pkgconfig 环境
# 在 cmake 时,选择了自动生成 OpenCV 的 pkgconfig 文件,在 /usr/local/lib/pkgconfig 路径可以看到该文件
sudo vim /etc/bash.bashrc
# 在文件末尾添加如下环境变量
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
# 保存退出,然后执行如下命令使配置生效
source /etc/bash.bashrc
# 使用以下命令查看是否安装和配置成功
pkg-config --modversion opencv4 # 输出 4.5.5
pkg-config --cflags opencv4 # 输出 -I/usr/local/include/opencv4
pkg-config --libs opencv4
# 输出 -L/usr/local/lib -lopencv_gapi -lopencv_highgui -lopencv_ml -lopencv_objdetect
# -lopencv_photo -lopencv_stitching -lopencv_video -lopencv_calib3d -lopencv_features2d
# -lopencv_dnn -lopencv_flann -lopencv_videoio -lopencv_imgcodecs -lopencv_imgproc -lopencv_core
OpenCV 动态库简介:
opencv_core :核心功能库(基本的数据结构、绘图函数、数组操作相关函数、动态数据结构等)
opencv_imgproc :图像处理函数库(线性和非线性滤波,高斯模糊,形态学膨胀/腐蚀,图像几何变换:缩放、仿射变换等,颜色空间转换,计算直方图等)
opencv_imgcodecs:图像文件读取与保存模块,主要用于图像文件的读取与保存
opencv_video :视频分析模块,主要包括运动估计、背景分离和物体追踪(光流法,移动模板,背景消除)
opencv_dnn :深度学习神经网络库,主要包括构建神经网络、加载序列化网络模型等
opencv_videoio:视频输入/输出模块,主要用于读取/写入视频或图像序列
opencv_ml :机器学习模型函数库(SVM,决策树,级联等)
opencv_objdetect :图像目标检测函数库(haar小波 & LBP人脸检测和识别,HOG人检测 等)
opencv_highgui :高层 GUI,图像和视频窗口函数库
opencv_features2d :主要用来处理图像特征点,如特征检测、描述与匹配
opencv_calib3d :主要包含相机标定与立体视觉等功能
opencv_flann :快速近似最近邻搜索算法库,主要包括快速最近邻搜索与聚类等
opencv_stitching:图像拼接模块,主要包含特征点寻找与匹配图像、旋转估计、自动校准、接缝估计等
opencv_photo:计算摄影模块,主要包含图像修复与去燥等
opencv_gapi:主要用于加速常规的图像处理,与其它模块相比,这个模块主要充当框架,而不是特定的算法
opencv_legacy :过时代码,为了后续代码兼容性而存在
opencv_gpu :用 CUDA 来加速一些 OpenCV 函数的类库
opencv_contrib :最新贡献但不是很成熟的函数库
5.测试 OpenCV
#include <iostream>
#include <opencv2/opencv.hpp> // 所有的头文件都将被自动包含
using namespace std;
using namespace cv; // 所有的 OpenCV 类和函数都放在 cv 命名空间
int main() {
Mat srcImage = imread("../lena.png");
imshow("Display Image window", srcImage);
waitKey(0);
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.22)
project(opencv_demo)
set(CMAKE_CXX_STANDARD 11) # OpenCV 库是基于 C++11 标准编写的
# 使用 find_package 引入 OpenCV 外部依赖包
find_package(OpenCV REQUIRED)
message("opencv found is: " ${OpenCV_FOUND}) # 1
#/usr/local/lib/cmake/opencv4/OpenCVConfig.cmake
#/usr/local/lib/cmake/opencv4/OpenCVModules-release.cmake
#/usr/local/lib/cmake/opencv4/OpenCVConfig-version.cmake
#/usr/local/lib/cmake/opencv4/OpenCVModules.cmake
# 引入库文件:相当于 g++ 命令的 -L 选项的作用,也相当于环境变量中增加 LD_LIBRARY_PATH 路径的作用
include_directories(${OpenCV_INCLUDE_DIRS})
message("include file name is: " ${OpenCV_INCLUDE_DIRS}) # /usr/local/include/opencv4
# 设置生成可执行文件
add_executable(opencv_demo main.cpp)
# 将第三方库链接在一起,生成的可执行文件在 cmake-build-debug
target_link_libraries(opencv_demo ${OpenCV_LIBS} ) # /usr/local/lib
message("lib file name is: " ${OpenCV_LIBS})
七、参考资料
1、OpenCV 官网:https://opencv.org/
2、OpenCV 官网 Github 地址:https://github.com/opencv/opencv
3、OpenCV 官网离线文档:https://docs.opencv.org/
4、OpenCV 官网在线文档:https://docs.opencv.org/4.x/
5、OpenCV教程:超详细的OpenCV入门教程,值得收藏!
6、Ubuntu 18.04安装配置OpenCV 4.4.0
7、在Ubuntu上安装OpenCV任何版本+Contrib库+CUDA兼容
8、OpenCV显示中文
9、字体下载链接:https://github.com/googlefonts/noto-cjk
原文链接:https://blog.csdn.net/mzpmzk/article/details/126185791
有删改。
标签:lopencv,opencv,local,OpenCV,源码,usr,cmake,安装 From: https://www.cnblogs.com/tryst/p/18009727