Ubuntu18.04安装OpenCV和OpenCV_Contrib

news2025/1/22 18:08:31

1. (如果需要)卸载已安装的OpenCV库

删除opencv其他的相关文件

sudo rm -r /usr/local/include/opencv2 
sudo rm -r /usr/local/include/opencv 
 
sudo rm -r /usr/include/opencv
sudo rm -r /usr/include/opencv2 
 
sudo rm -r /usr/local/share/opencv 
sudo rm -r /usr/local/share/OpenCV 
 
sudo rm -r /usr/share/opencv 
sudo rm -r /usr/share/OpenCV 
 
sudo rm -r /usr/local/bin/opencv* 
sudo rm -r /usr/local/lib/libopencv*
 
sudo rm -r usr/bin/opencv* 
sudo rm -r /usr/lib/libopencv*

参考提示:

前四行命令中的opencv2,有些有可能自己命名了opencv4,在相关目录下删除掉跟opencv相关的文件夹就可以。

检查是否完全删除:

pkg-config opencv --libs
pkg-config opencv --modversion

2. 下载安装包

2.1. 下载OpenCV

可以从OpenCV官网下载,选择自己需要的版本,官网地址 Releases - OpenCV

我这里安装的是最新的opencv-4.6.0 

也可以从github直接下载,然后切到需要的版本

git clone https://github.com/opencv/opencv

git checkout 4.6.0

2.2. 下载 Opencv Contrib

opencv_contrib下载 在Tags里找到相应版本下载,注意版本要与opencv一致 

我这里下载的是opencv_contrib 4.6.0

2.3. 文件夹组织

下载好解压后,将opencv_contrib放在opencv文件夹里面(为方便后续操作,可将上面两个文件夹分别命名为opencv和opencv_conrib)。
在这里插入图片描述

3. 环境配置

打开终端,依次执行

sudo apt-get install build-essential 
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

4. 安装

  • 在opencv文件夹下新建build文件夹
cd opencv
mkdir build
  • 在build文件夹下cmake
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ..

 注意:

后面“…/opencv_contrib/modules”表示opencv_contrib的modules文件夹所在的路径;

该过程需要下载一些东西,可能耗时较长。

  • 编译
make -j

在这里插入图片描述

  • 安装到系统
sudo make install
  • 添加路径

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

若找不到gedit命令则说明你之前没装,需要自己安装以下,打开一个终端,输入:

sudo apt install gedit

然后在打开文件中添加如下内容:

/usr/local/lib

之后再终端输入以下命令(安装完成某个工程后生成许多动态库,该命令是为了让这些动态链接库为系统所共享)

sudo ldconfig

使其保存并生效。
再在终端输入

sudo gedit /etc/bash.bashrc

打开文件后在末尾输入:

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

保存退出,终端输入:

source /etc/bash.bashrc

至此,opencv及opencv_contrib安装配置完成了!

5. 测试

进入opencv/samples/cpp/example_cmake目录下,终端打开,依次输入:

cd ../samples/cpp/example_cmake
cmake .
make
./opencv_example

运行结果依次为:
/home/cmx/图片/屏幕截图 2022-06-22 20:59:51.png

在这里插入图片描述

在这里插入图片描述

摄像头打开了,就可以了。

查看版本

pkg-config opencv --modversion		# 4.0以下版本
 
opencv_version						# 4.0以上版本

6. 问题记录

6.1. 编译时文件xxx.i缺失

如下图所示

这是因为一些文件没有下载下来,可能包括

boostdesc_bgm.i
boostdesc_bgm_bi.i
boostdesc_bgm_hd.i
boostdesc_binboost_064.i
boostdesc_binboost_128.i
boostdesc_binboost_256.i
vgg_generated_120.i
vgg_generated_64.i
vgg_generated_80.i
vgg_generated_48.i

解决办法:下载缺失的文件,然后拷贝到xfeatures2d/src下面。 

6.2. 编译时cuda.hpp缺失

解决办法:这类错误要看错误前面的他给出了源码中哪里有问题,找到错误提示处的文件源码,比如这里(上图):…/.opencv/modules/stitching/include/opencv2/stitching/detail/src/matchers.cpp中的52行有错,一般都是给的绝对路径不准确没有找到那个对应的文件。后面给出cuda.hpp的位置,把这个绝对路径直接代替报错处52行给出的不准确路径即可,如下图:

修改后的matchers.cpp类似的,下面这个错误就是找不到…/opencv/modules/stitching/src/precomp.hpp这个路径下的这个文件,把里面91行的

#include “/opencv2/xfeatures2d/cuda.hpp”

修改成

#include “/home/(你的用户名)/opencv/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp”*//(这个就是cuda.hpp这个文件的绝对路径)

描述修改好后保存关闭。

下面这个错误是路径里的features2d.cpp前面少了一个x

描述改好后,再make,有错继续改,直到100%

参考文献

Ubuntu18.04安装opencv和opencv_contrib_ubuntu18.04 下安装opencv4.6.0+opencv contrib4.6.0-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1673639.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言 文件操作

目录 1. 什么是文件?2. 二进制文件和文本文件3. 文件的打开和关闭3.1 流和标准流3.1.1 流3.1.2 标准流 3.2 文件指针3.3 打开、关闭文件3.3.1 fopen - 打开文件3.3.2 fclose - 关闭文件 4. 文件的顺序读写4.1 fgetc - 从文件流获取一个字符4.2 fputc - 将一个字符写…

Unreal自定义字体中,缺少字怎么办,有没有字表?

关键词:自定义字体,字表,编码,UTF-8,4E00-9FFF,4E00-9FA5,字符查重,字符唯一, 问题: 游戏中经常要自定义字体, 自定义字体往往要做离线字库 offline fonts 离线字库 离不开字符表。…

Qt实现水平方向流式布局FlowLayout简单又实用!

Qt中常见的布局管理器有: QHBoxLayout:水平布局(常用) QVBoxLayout:垂直布局(常用) QGridLayout:表格布局(常用) QFormLayout:表单布局&#…

009.Rx(Reactive Extenstions)的关系

响应式扩展库在组成响应式系统的应用程序中发挥作用,它与消息驱动的概念相关。Rx不是在应用程序或服务器之间移动消息的机制,而是在消息到达时负责处理消息并将其沿着应用程序内部的执行链传递的机制。需要说明的是,即使您没有开发包含许多组…

拥有一台服务器可以做哪些有趣又实用的事情?

在接触云服务器这个概念你以前,你是不是在想: 可能是,云服务器,这个产品的存在,它可以为你做些什么实用的事情吗? 或者是,云服务器这个看似高大上的科技产品,其实可以为我们的生活…

银河麒麟服务器操作系统V10-SP1部署gitlab服务

安装依赖 yum -y install policycoreutils-python openssh-server openssh-clients postfix cronie curl下载gitlab-ce-15.4.2-ce.0.el8.x86_64.rpm安装包。 wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/8/gitlab-ce-15.4.2-ce.0.…

ansys apdl求解器设置、Analysis option位置、多核设置

目录 求解器设置、Analysis option位置 解决内存不足,加速求解 求解器设置、Analysis option位置 一次仿真中注意到以下信息: During this loadstep the PCG iterative solver took more than 1000 iterations to solve the system of equations. I…

AD中在DRC后如何显示详细错误(冲突)细节

最近在使用AD过程中出现了一个问题,在这里做一下记录,以便之后查询。 在我进行DRC后,出现了错误,但是当我去放大查找具体原因时发现以前有的细节现在却没有显示了,如下图所示,放大后并未显示详细的错误信息…

弘君资本策略:股指预计保持震荡上扬格局 关注公用事业、电网设备等板块

弘君资本指出,周一A股商场探底上升、小幅震动收拾,早盘股指低开后震动回落,沪指盘中在3126点附近取得支撑,午后股指企稳上升,盘中电网设备、公用事业、电力以及工程建造等职业体现较好;半导体、互联网以及软…

axios传参方式

params参数通常用于GET请求添加查询参数,POST一般使用data参数传递参数 1、data传参 1-1、表单传参 // 方法定义 export function save(data) {return request({url: /url,headers: { Content-Type: multipart/form-data },method: post,data: data,}) }// 调用函…

看透了!软考系分就这68道母题,历史重复率90%

距离软考考试的时间越来越近了,趁着这两周赶紧准备起来。 今天给大家整理了——软考系统分析师68道经典母题,有PDF,可打印,每天刷几道,考试就像遇到“老朋友”。 1、企业信息化规划是一项长期而艰巨的任务&#xff0c…

【GPT4O 开启多模态新时代!】

系列文章目录 GPT-4o的出现,让 AI 真正进入了全能时代,而且 OpenAI 宣布所有人免费使用! 不论你是需要写文章、听声音还是看视频,GPT-4o都能满足你的需求 文章目录 系列文章目录什么是GPT-4o?一、GPT-40 的新功能二、…

【JavaEE 初阶(六)】网络编程

❣博主主页: 33的博客❣ ▶️文章专栏分类:JavaEE◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你了解更多网络知识 目录 1.前言2.浅谈网络2.1基本知识2.2.OSI与TCP/IP 3.网络编程3.1TCP与UDP区别3.2UDP网路编程…

static成员变量、static成员方法、静态成员变量初始化

static修饰成员变量 引入:我们设置一个学生类的场景,实例化三个学生对象,每个对象都有自己特有的名字,性别,年龄,成绩等,如下: 这些在Student类中定义的成员变量,每个对…

Docker和Kubernetes之间的关系

Docker和Kubernetes在容器化生态系统中各自扮演着不同的角色 它们之间是互补的,而不是替代关系。 Docker是一个开源的容器化平台,它允许开发人员将应用程序及其依赖项打包到一个可移植的容器中,并确保这些容器可以在任何Docker环境中一致地…

LeetCode 力扣题目:买卖股票的最佳时机 IV

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容,和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣! 推荐:数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航: LeetCode解锁100…

Windows电脑使用Docker安装AList网盘神器并配置公网地址打造私人云存储空间

文章目录 前言1. 使用Docker本地部署Alist1.1 本地部署 Alist1.2 访问并设置Alist1.3 在管理界面添加存储 2. 安装cpolar内网穿透3. 固定Alist公网地址 前言 本文和大家分享如何在Windows系统使用Docker本地部署Alist全平台网盘神器,然后结合cpolar内网穿透工具实现…

linux性能监控之lsof

lsof:list open files,显示所有打开的文件以及进程信息,我们通常用来检查特定的文件被哪些进程打开 [rootk8s-master ~]# lsof --help lsof: illegal option character: - lsof: -e not followed by a file system path: "lp" lso…

React 第三十二章 虚拟DOM

面试题:什么是虚拟DOM?其优点有哪些? 标准且浅显的答案 虚拟dom本质上就是一个普通的 JS 对象,用于描述视图的界面结构 虚拟 DOM 最早是由 React 团队提出来的,因此 React 团队在对虚拟 DOM 的定义上面有绝对的话语权。…

object.key()用法

object.key(obj) 一、概念:返回一个由一个给定对象的自身可枚举属性组成的数组。 二、用法: 1、参数为对象:则返回为 对象属性名组成的数组。 let obj {日期:date,姓名:userName,地址:address}console.log(Object.k…