(一)下载

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. linux 内核中READ_ONCE宏定义

    在Linux内核编程中,READ_ONCE 宏用于确保从内存中读取一个变量的值时,编译器不会对这个读取操作进行优化,从而保证了读取操作的原子性.这个宏通常在需要防止编译器优化.多线程或中断上下文中使用 ...

  2. Linux进程调度-组调度及带宽控制

    1. 概述 组调度(task_group)是使用Linux cgroup(control group)的cpu子系统来实现的,可以将进程进行分组,按组来分配CPU资源等. 比如,看一个实际的例子: A ...

  3. Oracle、MySQL等数据库故障处理优质文章分享 | 10月汇总

    墨天轮社区于9月起持续举办[聊聊故障处理那些事儿]DBA专题征文活动,每月进行评优发奖,鼓励大家记录工作中遇到的数据库故障处理过程,不仅用于自我复盘与分析,同时也能帮助其他的同仁们避坑. 上月为大家梳 ...

  4. activiti教程

    一.工作流介绍 1.1 概念 工作流(Workflow),就是通过计算机对业务流程自动化执行管理.它主要解决的是"使在多个参与者之间按照某种预定义的规则自动进行传递文档.信息或任务的过程,从 ...

  5. 自建互联网档案馆「GitHub 热点速览」

    这两天北京的气温骤降,仿佛在提醒我们冬日的脚步已悄然而至,让人不禁感叹时间的飞逝,一年的时间"转瞬即逝". 如果你想留下互联网上的珍贵瞬间,避免它们消失在 404 错误中.这款开源 ...

  6. RMI,SOA,微服务

    什么是SOA SOA(Service-Oriented Architecture),中文全称:面向服务的架构. SOA提倡将不同应用程序的业务功能封装成"服务"并宿主起来,通常以接 ...

  7. Solon Ioc 的魔法之注解注入器(也可叫虚空注入器)

    很多人惊叹于 Solon 的注入能力,一个注解怎可注万物??? 一.注解注入器 Solon Ioc 的四大魔法之一:注解注入器(BeanInjector<T extends Annotation ...

  8. 反射+特性实现 类和XML文档的序列化反序列化

    1.作用:将实体类的属性(字符串.日期.数值.布而.类)生成为xml文档中的结点,将xml文档的结点值或者属性值填充到实体类的属性值中2.思路:特性.反射.泛型:特性记录xml结点与实体属性的对应关系 ...

  9. Dbeaver24.2.2安装和使用教程(免费的数据库管理工具)

    前言 DBeaver是免费和开源(GPL)为开发人员和数据库管理员通用数据库工具. DBeaver 通过 JDBC 连接到数据库,可以支持几乎所有的数据库产品,包括:MySQL.PostgreSQL. ...

  10. GitHub创建新仓库

    第一步.右上角点击[+],选择[New repository] 第二步.设置一下仓库的基本信息 在如下图的红框位置,输入仓库的名称.描述以及是否公开. 第三步.滑到最下面,点击[Create repo ...