首页 > 编程语言 >源码安装 OpenCV

源码安装 OpenCV

时间:2024-02-06 14:44:05浏览次数:33  
标签:lopencv opencv local OpenCV 源码 usr cmake 安装

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

相关文章

  • 下载、安装Git并拷贝GitHub项目到本地的流程
      本文介绍分布式开源版本控制系统Git的下载、安装,并基于Git实现克隆GitHub中项目代码的方法。  Git是一款开源软件,因此我们直接在Git的官方下载地址下载最新版本的Git即可。其中,在下图所示的位置选择适合我们操作系统的Git版本。  随后,选择下图红色方框内的内容,下载最新......
  • 【源码日记】了解 PLpgSQL_datum
    basedonpostgrescommitb96115acb8a0e08a46877c2b8ef2a7b5560b371bTheSQLCREATEORREPLACEFUNCTIONdemo_fors()RETURNSVOIDAS$$DECLAREaRECORD;BEGINFORaINSELECT*FROMsome_tableLOOPRAISENOTICE'id:%,name:%',a.id,a.nam......
  • 家用电脑装esxi使用尝试和解决no network Adapters和VMware PowerCLI安装
    因为电脑换了新配置,老的电脑目前就没在用,想着闲置再利用一下的原则,想给他安装一下esxi,正好也可以折腾一下系统。我的主板是技嘉B85M-HD3-A的,查一下 VMwareCompatibilityGuide-I/ODeviceSearch 这个选择对应网卡型号,就能看到他支持的版本。很可惜,我的这个主板上带的这个网......
  • Ubuntu环境下安装并简单测试ros2
    1.设置编码aptupdate&&aptinstalllocaleslocale-genen_USen_US.UTF-8update-localeLC_ALL=en_US.UTF-8LANG=en_US.UTF-8exportLANG=en_US.UTF-82.添加源aptupdate&&aptinstallcurlgnupglsb-releasecurl-sSLhttps://raw.githubuserconte......
  • 在服务器中安装有ubuntu图形界面的docker,并通过主机的VNC进行远程控制(web页面远程控制
    参考链接https://github.com/fcwu/docker-ubuntu-vnc-desktop.git1.拉取镜像dockerpulldorowu/ubuntu-desktop-lxde-vnc2.直接dockerrun启动,启动参数如下,在浏览器打开,这里设置的端口是6080,在服务器执行这个命令运行之后dockerrun--namevnc_test-p6080:80-v/dev/s......
  • ML-Agents Python包安装
    Unity的机器学习工具包ML-Agents还是挺好用的,但是其Python后端在安装的过程中会出一些问题,在这里记录一下。为了方便多Python环境管理,我在搭建环境的时候使用了Anaconda包管理器。目前ML-Agents支持的Python版本为3.10.12,版本过高或过低都可能会缺少对应的依赖。打开一个PowerShe......
  • ReentrantLock源码分析、LockSuppor、ReentrantReadWriteLock、锁优化的方法
    ReentrantLock类图我们看一下重入锁ReentrantLock类关系图,它是实现了Lock接口的类。NonfairSync和FairSync都继承自抽象类Sync,在ReentrantLock中有非公平锁NonfairSync和公平锁FairSync的实现。在重入锁ReentrantLock类关系图中,我们可以看到NonfairSync和FairSync都继承自抽象......
  • ReentrantLock源码分析、LockSuppor、ReentrantReadWriteLock、锁优化的方法
    ReentrantLock类图我们看一下重入锁ReentrantLock类关系图,它是实现了Lock接口的类。NonfairSync和FairSync都继承自抽象类Sync,在ReentrantLock中有非公平锁NonfairSync和公平锁FairSync的实现。在重入锁ReentrantLock类关系图中,我们可以看到NonfairSync和FairSync都继承自抽象......
  • 安装mysql
    见原文:https://blog.csdn.net/bugu_hhh/article/details/130625482 二、navicat访问不让连接的问题:授权问题如果你想允许任何主机连接到你的MySQL服务器,你可以创建一个用户并为其授予全局访问权限。以下是如何完成的CREATEUSER'your_username'@'%'IDENTIFIEDBY'your......
  • prometheus之node_exporter安装
    一、简介node_exporter用来安装到被监控的主机上,暴露被监控主机的指标数据,服务器端基于http协议调用的端口9100(默认)来获取被监控服务器信息。二、安装部署下载地址https://github.com/prometheus/node_exporter/releases1、解压安装#tar-xvfnode_exporter-*.linux-amd6......