计算机视觉OpenCV系列1--源码安装

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(OpenCVINCLUDEDIRS)message("includefilenameis:"{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})

命令行编译:g++ -g opencv_main.cpp -o xmain `pkg-config --cflags --libs opencv`

七、参考资料

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

有删改。

posted @   星辰大海浩瀚宇宙呀  阅读(87)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示