Ubuntu18.04下安装OpenCV4.2.0与Opencv_contrib(图文详细报错总结)

2023-11-11

前期准备—环境依赖

Cmake(编译器)

具体安装细节可以参考之前写的一篇《Ubuntu下安装Cmake(编译)》

依赖环境

sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev

具体为以下环境依赖

build-essential 
libgtk2.0-dev 
libgtk-3-dev 
libavcodec-dev 
libavformat-dev 
libjpeg-dev 
libswscale-dev 
libtiff5-dev

在这里插入图片描述

Python环境

注意OpenCV4.2.0需要Python3.x的环境

sudo apt install python3-dev

此外还需要Numpy函数库

sudo apt install python3-numpy

在这里插入图片描述

streamer环境

sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev

图像处理依赖

sudo apt install libpng-dev libopenexr-dev libtiff-dev libwebp-dev

PS:对于显示图像imshow(),正常显示几秒后报错:
Gtk-Message: 11:37:50.847: Failed to load module “canberra-gtk-module”
问题为缺少库,执行命令安装即可:

sudo apt-get install libcanberra-gtk-module

在这里插入图片描述

安装OpenCV

OpenCV官网(https://opencv.org/releases/)找到OpenCV 4.2.0版本,下载Sources源码
在这里插入图片描述
也可以在OpenCV的GitHub中下载:
在这里插入图片描述

编译OpenCV

下载完成后解压进入OpenCV 4.2.0的文件目录中
新建build文件作为编译文件夹

mkdir build
cd build

配置cmake编译参数

cmake -DCMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=ON -DCMAKE_INSTALL_PREFIX=/usr/local ..

在这里插入图片描述

make编译

终端执行

make -j8

OpenCV4版本默认不生成.pc文件,执行OPENCV_GENERATE_PKGCONFIG=ON生成。
PS:这里-j的参数是根据CPU的核数,8核-j8,4核-j4
在这里插入图片描述
编译完成后执行安装:

sudo make install

在这里插入图片描述

配置OpenCV动态库

配置OpenCV动态库环境,程序执行时加载动态库.so的路径*

cd /etc/ld.so.conf.d/
sudo touch opencv4.conf
sudo sh -c 'echo "/usr/local/lib" > opencv4.conf'

更新pkg-config

sudo ldconfig

验证OpenCV环境

终端执行:

pkg-config --libs opencv4
pkg-config --cflags opencv4

在这里插入图片描述
出现如图所示即可表示OpenCV安装成功

# python环境下OpenCV环境验证:

进入Python环境,终端执行:

Python3
import cv2

在这里插入图片描述

安装Opencv_contrib

下载opencv_contrib

OpenCV-Github官方:https://github.com/opencv/opencv_contrib

配置编译项

进入OpenCV4.2.0的目录,清空刚才编译的build文件夹,重新编译:
这里需要注意Opencv_contrib的路径在这里插入图片描述

cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4 -D OPENCV_EXTRA_MODULES_PATH=/home/bigboss/opencv-4.2.0/opencv_contrib-4.2.0/modules/ ../

在这里插入图片描述

出现的问题

一、ippicv下载问题

在Cmake编译中可能会出现ippicv下载问题
在这里插入图片描述

下载ippicv_2019_lnx_intel64_general_20180723.tgz

Github地址:https://github.com/opencv/opencv_3rdparty/tree/ippicv/master_20180723/ippicv
PS:这里的下载根据自己的系统架构选择
在这里插入图片描述

修改opencv相关配置文件

进入**…/opencv-4.2.0/3rdparty/ippicv路径下打开ippicv.cmake**文件
在这里插入图片描述
修改第47行内容:将原来的下载网址替换为下载的本地文件路径:

   "file:~/Downloads/"  # 根据自己的实际路径参考

在这里插入图片描述
修改后:
在这里插入图片描述

二、boostdesc和vgg_generated文件下载较慢的问题

在编译中可能会遇到boostdescvgg_generated下载较慢的问题:
在这里插入图片描述
可以通过离线下载https://github.com/JZhong-Li/boostdesc_bgm.i
复制到到**opencv_contrib/modules/xfeatures2d/src/**目录中
在这里插入图片描述

make安装(Opencv_contrib)

终端执行make,-j的参数根据自己CPU实际内核做调整

maake -j4

如果遇到:

Makefile:165: recipe for target 'all' failed
make: *** [all] Error 2

重复执行make即可,
在这里插入图片描述
最后执行

sudo make install

切换OpenCV版本 (补充)

 sudo gedit /etc/ld.so.conf.d/opencv.conf

PS:执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加并保存

/usr/local/lib

在这里插入图片描述
同步配置路径生效

sudo ldconfig

配置bash

sudo gedit /etc/bash.bashrc

在最末尾添加:

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

在这里插入图片描述

保存使得配置生效

source /etc/bash.bashrc  

更新环境信息

sudo updatedb

OpenCV代码测试

调用摄像头

进入**/opencv-4.2.0/samples/cpp/example_cmake**

cd opencv-4.2.0/samples/cpp/example_cmake
cmake .
make
./opencv_example

执行结构:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ubuntu18.04下安装OpenCV4.2.0与Opencv_contrib(图文详细报错总结) 的相关文章

  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • 重载<<的返回值

    include
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 如何在整个 ASP .NET MVC 应用程序中需要授权

    我创建的应用程序中 除了启用登录的操作之外的每个操作都应该超出未登录用户的限制 我应该添加 Authorize 每个班级标题前的注释 像这儿 namespace WebApplication2 Controllers Authorize p
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 覆盖子类中的字段或属性

    我有一个抽象基类 我想声明一个字段或属性 该字段或属性在从该父类继承的每个类中具有不同的值 我想在基类中定义它 以便我可以在基类方法中引用它 例如覆盖 ToString 来表示 此对象的类型为 property field 我有三种方法可以
  • 链接器错误:已定义

    我尝试在 Microsoft Visual Studio 2012 中编译我的 Visual C 项目 使用 MFC 但出现以下错误 error LNK2005 void cdecl operator new unsigned int 2
  • 为什么编译时浮点计算可能不会得到与运行时计算相同的结果?

    In the speaker mentioned Compile time floating point calculations might not have the same results as runtime calculation
  • 通过指向其基址的指针删除 POD 对象是否安全?

    事实上 我正在考虑那些微不足道的可破坏物体 而不仅仅是POD http en wikipedia org wiki Plain old data structure 我不确定 POD 是否可以有基类 当我读到这个解释时is triviall
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • IEnumreable 动态和 lambda

    我想在 a 上使用 lambda 表达式IEnumerable
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • C++ 标准是否指定了编译器的 STL 实现细节?

    在写答案时this https stackoverflow com questions 30909296 can you put a pimpl class inside a vector我遇到了一个有趣的情况 这个问题演示了这样一种情况
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • NotImplementedError:无法将符号张量 (lstm_2/strided_slice:0) 转换为 numpy 数组。时间

    张量流版本 2 3 1 numpy 版本 1 20 在代码下面 define model model Sequential model add LSTM 50 activation relu input shape n steps n fe

随机推荐

  • STM32 CubeMX 生成RT-Thread工程时RT-Thread源码不能Go To Definition跳转

    STM32 CubeMX 生成RT Thread工程时RT Thread源码不能Go To Definition跳转 MDK报错如下 Browse information of one or more files is not availa
  • 如何使用PVRTexTool提升移动端图形效果

    导语 本文作者Ben Anuworakarn 是PowerVR 开发技术团队的技术作者 具有计算科学工程知识背景 文中 他针对移动端游戏画面的优化 介绍了图像纹理处理 Mipmapping以及渗色等相关技术 同时 通过充分利用PVRTexT
  • the propfind response did not include the requested properties

    从仓库检出代码客户端提示如下错误 the propfind response did not include the requested properties 这意味着 客户端的协议版本高于服务器的版本 server的协议没有client要
  • Spring注解之实体类常用注解

    import org hibernate annotations AccessType import org hibernate annotations import javax persistence import javax persi
  • 【CSRF攻击分析】

    目录 一 什么是CSRF漏洞 二 CSRF漏洞的原理和利用过程 三 CSRF漏洞的检测方法 四 攻击利用姿势 五 防护手段 一 什么是CSRF漏洞 CSRF即跨站点请求伪造 Cross Site Request Forgery 跟XSS攻击
  • 内测体验:GitHub Copilot智能代码补全自动写代码插件

    异想之旅 本人原创博客完全手敲 绝对非搬运 全网不可能有重复 本人无团队 仅为技术爱好者进行分享 所有内容不牵扯广告 本人所有文章仅在CSDN 掘金和个人博客 一定是异想之旅域名 发布 除此之外全部是盗文 概述 一大早起床 收到了GitHu
  • 工业数字智能化常用系统简介

    文章目录 QMS 1 IPQC 过程检 2 OQC 出货检 3 SPC 统计工序控制 4 Andon 安灯 5 其他 MDM MES QMS 质量管理体系 是Quality Management System 的简称 通常包括制定质量方针
  • Centos配置OpenVPN+OpenLDAP认证

    Centos配置OpenVPN OpenLDAP认证 一 安装openvpn auth ldap插件 二 配置ldap conf文件 三 配置openvpn中的server conf文件 四 配置客户端client ovpn文件 五 开启路
  • 计算机提示msvcp110.dll文件丢失下载安装修复教程

    电脑打开一个浏览器后在顶部网址栏目输入 dll修复程序 site 按下键盘的回车键打开前往 下载完成的修复工具需要对其进行压缩 解压好了以后打开工具 打开修复工具后 可以看到右边修复与检测的项目 点击一下开始检测电脑丢失的dll系统文件 检
  • 回来喂马啊

    继续回来喂马了 1 这么多天没更新的原因 断更也有一段时间了 近期实在是业务过于繁忙 上线了项目之后又开启了新的项目 确实很难顾得上 毕竟一下班回家就累的只想躺平哈哈哈哈 还有一个原因是新项目和后续的项目转用了SpringBoot Myba
  • ios中的锁

    代码测试可参考 只有实际写过才能更好的理解 在平时开发中我们经常会使用多线程 多线程为我们带来了很大便利 也提高了程序的执行效率 但同时也带来数据风险 当至少有两个线程同时访问同一个变量 而且至少其中有一个是写操作时 就发生了Data ra
  • java中栈的使用

    栈是什么 栈的定义 栈是我们经常使用的一种线性数据结构 它是只能通过一端操作的线性表 我们可以操作的一端称之为栈顶 另一端则称之为栈底 特点 栈通常和队列作比较 队列的特点是先进先出 栈的特点则是先进后出 举一个例子 比如说我们生活中洗碗
  • hdu 6181 Two Paths

    Problem acm hdu edu cn showproblem php pid 6181 Reference Dijkstra应用之次短路 2017 Multi University Training Contest 10 1011
  • 基于微信小程序的在线小说阅读系统,附数据库、教程

    1 功能简介 Java基于微信小程序的在线小说阅读系统 微信小程序的在线小说阅读系统 系统的整体功能需求分为两部分 第一部分主要是后台的功能 后台功能主要有小说信息管理 注册用户管理 系统系统等功能 微信小程序主要分为首页 分类和我的三部分
  • ArcSDE 日志文件表(一)

    今天跟大家介绍一下ArcSDE日志文件表 一直都想好好研究一下这块 因为基本上不太受大家重视 感兴趣的用户不是很多 但是一旦出现多用户并发查询或者版本操作的时候 这个东西就显得非常重要了 而且根据不同的用户场景设定不同的日志类型 对相关效率
  • HTTP超文本传输协议

    HTTP协议 超文本传输协议 注意 我们以后编写Servlet类时 不会直接继承GenericServlet类 因为我们是B S结构系统 这种系统是基于HTTP超文本传输协议的 他有一个专门的Servlet类 我们编程的时候要继承HttpS
  • esp8266 esp12 AT指令连接wifi热点联网,HTTP获取OneNET物联网平台消息,控制四路远程开关

    esp8266 esp12 使用AT指令联网非常方便 很适合应对已经开发好的成品需要增加联网功能的需求 使用AT指令进行开发 大多数是产品已经开发好 只需要增加小数据量的联网功能 而且不想对既有成品有较大的方案修改 下面来使用 esp826
  • AttributeError: 'generator' object has no attribute 'next'

    在python3 x版本中 python2 x的g next 函数已经更名为g next 所以只需要将g next 换成g next 就可以了 如果你觉得g next 太丑 使用next g 也能达到相同效果
  • CentOS7中使用yum安装Nginx的方法

    最近无意间发现Nginx官方提供了Yum源 因此写个文章记录下 1 添加源 默认情况Centos7中无Nginx的源 最近发现Nginx官网提供了Centos的源地址 因此可以如下执行命令添加源 sudo rpm Uvh http ngin
  • Ubuntu18.04下安装OpenCV4.2.0与Opencv_contrib(图文详细报错总结)

    Ubuntu18 04下安装OpenCV4 2 0与Opencv contrib 图文详细 前期准备 环境依赖 Cmake 编译器 依赖环境 Python环境 streamer环境 图像处理依赖 安装OpenCV 编译OpenCV 配置cm