(一)下载

opencv下载地址:https://opencv.org/releases/

opencv_contrib下载地址:https://github.com/opencv/opencv_contrib/tags

opencv_contrib是opencv的扩展,主要作用是能够调用GPU进行加速计算,可下载也可不下,且当你GPU性能比较差时反而导致运算速度更慢,两个都要下载源码。

以下以opencv-4.7.0示例。

(二)安装工具及编译

1、依赖库安装

ubuntu等系统通过apt命令安装:

    apt install build-essential cmake git pkg-config libgtk-3-dev \
libavcodec-dev libavformat-dev libswscale-dev libv4l-dev \
libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev \
gfortran openexr libatlas-base-dev python3-dev python3-numpy \
libtbb2 libtbb-dev libdc1394-22-dev libopenexr-dev \
libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev

centos、openclouds等系统通过yum命令安装:

yum install cmake gcc gcc-c++ gtk2-devel gtk3-devel gimp-devel gimp-devel-tools gimp-help-browser zlib-devel libtiff-devel libjpeg-devel libpng-devel gstreamer-devel libavc1394-devel libraw1394-devel libdc1394-devel jasper-devel jasper-utils swig python libtool nasm

2、源码安装

解压不多说,解压后将opencv_contrib放入opencv目录中。

cd opencv-4.7.0

mkdir build && cd build

## 构建
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D OPENCV_EXTRA_MODULES_PATH=/usr/local/opencv-4.7.0/opencv_contrib-4.7.0/modules \
-D BUILD_EXAMPLES=ON ..

在构建代码中CMAKE_INSTALL_PREFIX涉及到之后引用opencv的路径,OPENCV_GENERATE_PKGCONFIG影响pkgconfig的创建,建议填写。

注意:在进行编译过程中,可能会遇到构建程序卡在如下进度:

IPPICV: Downloading ippicv_2020_lnx_intel64_20191018_general.tgz from https://ghproxy.com/https://raw.githubusercontent.com/opencv/opencv_3rdparty/a56b6ac6f030c312b2dce17430eef13aed9af274/ippicv/ippicv_2020_lnx_intel64_20191018_general.tgz

此时需要找到源代码,修改上述下载路径,在路径前加上https://ghproxy.com/。

  • 找到/usr/local/opencv-4.7.0/3rdparty/ippicv,将ippicv.cmake中的下载路径进行修改,如原地址为:
https://ghproxy.com/https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/

修改后为:

https://ghproxy.com/https://ghproxy.com/https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/
  • 找到/usr/local/opencv-4.7.0/opencv_contrib-4.7.0/modules/wechat_qrcode,打开CMakeList.txt修改下载路径
  • 找到/usr/local/opencv-4.7.0/opencv_contrib-4.7.0/modules/xfeatures2d/cmake,两个cmake都修改

。。。其他的类似,所以说,没GPU加速需求别瞎安装opencv_contrib,找事。

构建完后,开始编译安装

make -j2 && make install

3、环境配置

查看opencv版本信息

pkg-config opencv4 --libs --cflags

如果显示没找到,需要在/etc/profile加入下面配置:

export PKG_CONFIG_PATH=/usr/local/lib64/pkgconfig:$PKG_CONFIG_PATH

最后在/etc/profile加入用于调用的环境变量:

export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH

注意:构建时未配置OPENCV_GENERATE_PKGCONFIG会缺少opencv4.pc文件,导致pkg-config opencv4 --libs --cflags还是不能用

需要手动创建opencv4.pc文件

mkdir /usr/local/lib64/pkgconfig
vim /usr/local/lib64/pkgconfig/opencv4.pc

然后加入以下内容:

# Package Information for pkg-config

prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib64
includedir=${prefix}/include/opencv4 Name: OpenCV
Description: Open Source Computer Vision Library
Version: 4.7.0
Libs: -L${exec_prefix}/lib64 -lopencv_stitching -lopencv_aruco -lopencv_bgsegm -lopencv_bioinspired -lopencv_ccalib -lopencv_dnn_objdetect -lopencv_dnn_superres -lopencv_dpm -lopencv_face -lopencv_freetype -lopencv_fuzzy -lopencv_hfs -lopencv_img_hash -lopencv_intensity_transform -lopencv_line_descriptor -lopencv_mcc -lopencv_quality -lopencv_rapid -lopencv_reg -lopencv_rgbd -lopencv_saliency -lopencv_stereo -lopencv_structured_light -lopencv_phase_unwrapping -lopencv_superres -lopencv_optflow -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_imgcodecs -lopencv_flann -lopencv_photo -lopencv_imgproc -lopencv_core
Libs.private: -ldl -lm -lpthread -lrt
Cflags: -I${includedir}

(三)引用

1.对于Cmake项目,需要在CmakeList.txt中添加以下配置:

# 查找opencv包
find_package(OpenCV REQUIRED)
# 添加头文件目录
include_directories(${OpenCV_INCLUDE_DIRS})
# 链接opencv库,your_executable_or_library表示可执行文件名
target_link_libraries(your_executable_or_library ${OpenCV_LIBS})

2.对于g++、gcc项目,在编译时加上pkg-config opencv4 --libs --cflags,如下:

g++ xxx.cpp -o xxx xxx.cpp  `pkg-config opencv4 --libs --cflags`

3.代码中使用时需要在include中加入如下:

#include<opencv2//opencv.hpp>

opencv+Linux源码编译安装及引用的更多相关文章

  1. Ubuntu 17.04版本下,opencv进行源码编译安装

    本文主要针对Ubuntu 17.04版本下,opencv进行源码编译安装.开发环境主要针对python 对 openCV库的调用. 安装 gcc cmake 编译环境 sudo apt-get ins ...

  2. linux源码编译安装OpenCV

    为了尽可能保证OpenCV的特性,使用OpenCV源码编译安装在linux上.先从安装其依赖项开始,以ubuntu 14.04.X为例讲解在Linux上源码编译安装OpenCV,其他linux版本可以 ...

  3. Linux源码编译安装httpd

    Linux安装软件采用源码编译安装灵活自由,适用于不同平台,维护也十分方便. 源码编译的安装方式一般由3个步骤组成: 1.配置(configure) 2.编译(make) 3.安装(make inst ...

  4. Linux 源码编译安装软件

    程序包编译安装的步骤: 源代码-->预处理-->编译-->汇编-->链接-->执行 多文件:文件中的代码之间,很可能存在跨文件依赖关系 1.编译源码的项目工具 使用相关的 ...

  5. Linux源码编译安装程序

    一.程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件:就是通常我们见到的lib目录下的文件 配置文件:这个不必多说,都知道 帮助文档:通常是我们在 ...

  6. Linux源码编译安装MySQL5.7

    目录[-] 一.环境准备: 二.升级系统: 三.做一些准备工作(以下Linux命令均在su到root用户操作): 四.开始编译安装mysql-5.7.9: 一.环境准备: 我尝试过以下环境都是能成功的 ...

  7. Linux源码编译安装php7.2

    以下简单的介绍下如何源码安装PHP,对于版本不一定是7.2,也可以是7.3,当然方法都是换汤不换药的,核心东西不变. 一.下载PHP源码 需要到指定的路径下载源码,执行下面的命令 wget http: ...

  8. 部署maria数据库到linux(源码编译安装)

    maria数据库是mysql原作者另外开发的一个版本,使用方法和mysql一样,可以直接用mysql的库连接. 在这下载包并解压: https://mariadb.org/download/ 建立数据 ...

  9. linux源码编译安装php出现 cannot find -lltdl

    原因: 在编辑php时添加的“–with-mcrypt”选项造成. 解决方法: 1.如果不需要mcrypt,那么编辑php时去掉该选项,然后再make.make install. 2.如果需要mcry ...

  10. Linux源码编译安装php7.3

    ---恢复内容开始--- ps:一切从简 一.安装所需环境 yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel ...

随机推荐

  1. USB gadget驱动框架(五)

    本节主要分析虚拟串口的tty设备的注册.创建/dev/ttyGSx设备节点.tty相关接口的实现. tty的申请与注册 源码:drivers/usb/gadget/function/u_serial. ...

  2. Cache和DMA一致性

    DMA应该多多少少知道点吧.DMA(Direct Memory Access)是指在外接可以不用CPU干预,直接把数据传输到内存的技术.这个过程中可以把CPU解放出来,可以很好的提升系统性能.那么DM ...

  3. 9月《中国数据库行业分析报告》已发布,47页干货带你详览 MySQL 崛起之路!

    为了帮助大家及时了解中国数据库行业发展现状.梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新<中国数据库行业分析报告>,持 ...

  4. .NET高级调试 - 3.8线程操作

    简介 高级调试过程中,与线程与线程栈是打交道特别多的.因此如何查看线程与线程栈就显得至关重要了 查看线程 !Threads 使用 !t/!Threads 命令获取所有托管线程 含义 ThreadCou ...

  5. 妙用编辑器:使用Notepad--宏功能提高维护指令生成生成效率

    应用场景 日常维护工作中,需要快速生成一批指令来完成某些操作,比如:快速添加一批节点. 目标指令列表如下: ADD NODE: ID=1, NAME="NODE_1"; ADD N ...

  6. Vue 中 v-html 无法被 style scoped 渲染的问题

    假设有这么一个 vue 组件: <template> <div v-html="docPreview"/> </template> <st ...

  7. 为数据集而生的 SQL 控制台

    随着数据集的使用量急剧增加,Hugging Face 社区已经变成了众多数据集默认存放的仓库.每月,海量数据集被上传到社区,这些数据集亟需有效的查询.过滤和发现. 每个月在 Hugging Face ...

  8. PhpStorm 中切换PHP8以上报错 VCRUNTIME140.dll 与PHP 版本不兼容

    错误原因:PhpStorm 附带了旧版本或错误版本的vcruntime140.dll 解决方法: 打开PhpStorm VCRUNTIME140 存在目录  C:\Program Files\JetB ...

  9. css画三角形,对角 √ 勾形

    .selected{ border-color: #5FB878; } .selected:after { content: ""; position: absolute; top ...

  10. switch、case语句的问题

    switch.case语句: 点击查看代码 int state = 1; switch(state) { case 1: { //状态1执行的程序 } case 2: { //状态2执行的程序 } d ...