Ubuntu22.04环境下源码安装OpenCV 4.8.1

因为项目需要用OpenCV对yolov8模型进行推理,通过DNN模块,之前本地的OpenCV版本是4.5.4(好像安装完ROS2 humble之后系统就自带了opencv),加载onnx模型一直报错,网上查询到需要4.7以上,干脆直接升级到4.8.1了。

目录

  • 1.源码下载
  • 2.环境准备
  • 3.源码编译
  • 4.环境配置
  • 5.测试验证
  • 6.CMake中指定OpenCV版本

1.源码下载

opencv:https://github.com/opencv/opencv

  • 选择4.8.1的源码包进行下载
    在这里插入图片描述

opencv_contrib:https://github.com/opencv/opencv_contrib

  • 同样选择4.8.1的源码包进行下载
    在这里插入图片描述
  • 下载好后选择通过图形界面或者unzip命令进行解压。并将contrib源码文件夹移动到opencv文件夹中
    在这里插入图片描述

2.环境准备

  • 安装依赖和cmake工具
    打开终端,输入如下代码进行安装依赖和cmake工具安装:
sudo apt-get install build-essential

sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libgtk-3-dev

sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

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

在这里插入图片描述

3.源码编译

  • 在之前解压的opencv-4.8.1文件夹下建立一个build文件夹,并进入该文件夹
mkdir build && cd build

PS:如果你不想安装opencv的其他一些语言的接口,可以自行参考下面的命令

指定编译类型,并将编译后的库安装到/usr/local/

sudo cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.8.1/modules -D BUILD_JAVA=OFF -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=OFF CMAKE_INSTALL_PREFIX=/usr/local ..

耐心等待,会下载一些其他库、、、
在这里插入图片描述
在这里插入图片描述

  • 编译
sudo make -j4

在这里插入图片描述
在这里插入图片描述

  • 安装到/usr/local
sudo make install

在这里插入图片描述

4.环境配置

  • 配置导入路径
sudo gedit /etc/ld.so.conf

在打开的文件后面添加/usr/local/lib,然后用下面的命令加载更新后的配置。
在这里插入图片描述

sudo ldconfig 
  • 输入以下命令检查安装版本
pkg-config opencv --modversion

如果出现如下错误:
在这里插入图片描述

解决:

 cd /usr/local/lib
 sudo mkdir pkgconfig # 如果已经存在则不需要再创建
 cd pkgconfig
 sudo gedit opencv.pc

在打开的文本写入如下信息,保存,然后退出

prefix=/usr/local

exec_prefix=${prefix}

includedir=${prefix}/include

libdir=${exec_prefix}/lib


Name: opencv

Description: The opencv library

Version:4.8.1

Cflags: -I${includedir}/openCV4

Libs: -L${libdir} -lopencv_shape -lopencv_stitching -lopencv_objdetect -lopencv_superres -lopencv_videostab -lopencv_calib3d -lopencv_features2d -lopencv_highgui -lopencv_videoio -lopencv_imgcodecs -lopencv_video -lopencv_photo -lopencv_ml -lopencv_imgproc -lopencv_flann  -lopencv_core

~
  • 修改rc文件
gedit ~/.bashrc

在文件末尾添加两行:

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

关闭保存后,使用以下命令更新以下配置

source /.bashrc

输入以下命令检查安装版本

pkg-config opencv --modversion

在这里插入图片描述

5.测试验证

打开终端,进入原先opencv源码目录下,并输入以下命令对例程进行编译

cmake .
make
./opencv_example

得到以下画面

在这里插入图片描述
在这里插入图片描述

6.CMake中指定OpenCV版本

  • CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(OpenCVProject)

# 指定OpenCV版本的路径
set(OpenCV_DIR /usr/local/lib/cmake/opencv4)
find_package(OpenCV REQUIRED)
message(STATUS "***OpenCV version: ${OpenCV_VERSION}")

add_executable(MyOpenCVApp src/main.cpp)

target_link_libraries(MyOpenCVApp ${OpenCV_LIBS})
  • main.cpp
#include <opencv2/opencv.hpp>
#include <iostream>

int main()
{
    std::cout << "OpenCV version: " << CV_VERSION << std::endl;
    return 0;
}

参考:https://www.bilibili.com/read/cv30840280/

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

山西农业大学20241014

01-VUE 一 VUE1. VUE2 和 VUE32. VUE概述2.1 构建用户界面2.2 渐进式 3. 创建Vue实例3.1 引入vue -- 下载方式3.2 引入vue方式3.3. 代码演示 4. Vue语法4.1 插值表达式 {{}}4.2 响应式特性4.2.1 响应式4.2.2 如何访问 和 修改data中的数据 5. Vue开发插件 一 VUE 1. VUE2 和 V…

JQuery基本操作(一)

获取表单元素的值 $(选择器).val(); //获取 $(选择器).val(值); //赋值 <body><div>用户名&#xff1a;<input type"text" id"userName"/><button id"get">获取值</button><button id"set">设…

LeetCode题练习与总结:最小高度树--310

一、题目描述 树是一个无向图&#xff0c;其中任何两个顶点只通过一条路径连接。 换句话说&#xff0c;任何一个没有简单环路的连通图都是一棵树。 给你一棵包含 n 个节点的树&#xff0c;标记为 0 到 n - 1 。给定数字 n 和一个有 n - 1 条无向边的 edges 列表&#xff08;每…

Elasticsearch 入门

ES 概述 ES 是一个开源的高扩展的分布式全文搜索引擎。 倒排索引 环境准备 Elasticsearch 官方地址&#xff1a;https://www.elastic.co/cn/ 下载地址&#xff1a; 注意&#xff1a;9300 端口为 Elasticsearch 集群间组件的通信端口&#xff0c;9200 端口为浏览器访问的 h…

【Flutter、H5、Web?前端个人总结】分享从业经历经验、自我规范准则,纯干货

前言 hi&#xff0c;正式接触web前端已经经过了两年的时间&#xff0c;从大学的java后端转型到web前端&#xff0c;再到后续转战Flutter&#xff0c;逐渐对前端有了一些心得体会&#xff0c;其实在当下前端的呈现形式一直在变化&#xff0c;无论你是用原生、还是web还是混编的…

2024第四届”认证杯“数学中国全国大学生数学竞赛参赛通知

2024第四届“认证杯”数学中国 全国大学生数学竞赛报名通知 为了培养人才、服务教学、促进高等学校数学课程的改革和建设&#xff0c;增加大学生学习数学的兴趣&#xff0c;培养分析、解决问题的能力&#xff0c;发现和选拔数学创新人才&#xff0c;为青年学子提供一个展示数…

STARnak, LTR 模型笔记

未完成. 1. 简述 CIKM 23 的一篇论文, 任务为 Learning To Rank, 输入为 候选集合, 输出为 有序列表, 用于 top-n 推荐场景. 思考: 它是要替代 ctr 预估么?它跟 mind 这种召回, 有啥大的不一样么? 2. 网络结构 u u u: 将用户(或 query) 记为 u H q d X , d Y , . . . H…

【Python爬虫实战】正则:多字符匹配、开头与结尾定位、分组技术详解

&#x1f308;个人主页&#xff1a;https://blog.csdn.net/2401_86688088?typeblog &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html 目录 前言 一、匹配多个字符 &#xff08;一&#xff09;匹配任意多个字符 &#xff0…

一次Fegin CPU占用过高导致的事故

记录一下 一次应用事故分析、排查、处理 背景介绍 9号上午收到CPU告警&#xff0c;同时业务反馈依赖该服务的上游服务接口响应耗时太长 应用告警-CPU使用率 告警变更 【WARNING】项目XXX,集群qd-aliyun,分区bbbb-prod,应用customer,实例customer-6fb6448688-m47jz, POD实例CP…

使用OpenCV实现基于FisherFaces的人脸识别

引言 随着人工智能技术的发展&#xff0c;人脸识别已经成为日常生活中不可或缺的一部分。在众多的人脸识别算法中&#xff0c;FisherFaces 方法因其简单易用且具有良好的识别效果而备受青睐。本文将详细介绍如何使用Python和OpenCV库实现基于FisherFaces的人脸识别系统&#x…

2024-10-15 学习人工智能的Day7

在简单的了解完学习人工智能所需的高数、线代、概率论后&#xff0c;我们又重新开始了国庆的学习&#xff0c;因为已经有十余天没有接触python&#xff0c;所以今天的内容主要是对之前学习的python的回顾与总结&#xff0c;然后对各个部分进行了简单的实践&#xff0c;在最后学…

el-table表格里面有一条横线

表格里面 有一条横线&#xff0c; 出现原因&#xff1a;是自定义了表格头.使用了固定列&#xff08;fixed&#xff09;&#xff0c;定宽。就很难受。。。 添加样式文件&#xff1a; <style lang"scss" scoped>::v-deep {.el-table__fixed-right {height: 100%…

【unity框架开发起步】一些框架开发思维和工具类封装

文章目录 前言一、Editor操作二、快捷导出unity包三、快捷打开存储目录四、封装概率函数五、方法过时六、partial 关键字&#xff0c;拆开合并类七、从数组中随机取⼀个数值并进⾏返回1、实现2、object 类优化3、泛型&#xff0c;结构复⽤利器4、params 关键字优化 八、abstrac…

自定义类型:结构体【上】

一.结构体类型的声明 结构是一些值的集合&#xff0c;这些值称为成员变量&#xff0c;结构的每个成员可以是不同类型的变量。结构的声明基本形式&#xff1a; struct tag {member-list; }variable-list;例如描述一个学生&#xff1a; 二.结构体变量的创建和初始化 我们直接先来…

Golang正则表达式详解:regexp包的应用与最佳实践

Golang正则表达式详解&#xff1a;regexp包的应用与最佳实践 引言基本概念与正则表达式基础正则表达式简介基本语法和字符普通字符元字符 常用的正则表达式模式示例 regexp 包的基本用法导入 regexp 包编译正则表达式CompileMustCompile 简单匹配MatchMatchString 示例 高级匹配…

Qt小bug — LINK : fatal error LNK1158: 无法运行“rc.exe“

Qt小bug —— LINK &#xff1a;fatal error LNK1158&#xff1a;无法运行"rc.exe" 环境 Qt 5.14.2 MSVC 2015 x64 现象 解决 在电脑上找到rc.exe 和rcdll.dll &#xff08;一般在C:\Program Files(x86)\Windows Kits*\bin\x64下面&#xff09;拷贝到 C:\Qt\Qt5…

从SQL Server过渡到PostgreSQL:理解模式的差异

前言 随着越来越多的企业转向开源技术&#xff0c;商业数据库管理员和开发者也逐渐面临向PostgreSQL迁移的需求。 虽然SQL Server和PostgreSQL共享许多数据库管理系统&#xff08;RDBMS&#xff09;的基本概念&#xff0c;但它们在处理某些结构上的差异可能会让人感到困惑&…

吴恩达深度学习笔记(3)--深度学习的实际应用

训练、开发、测试集 目前超参数的确定依赖于实验迭代调整&#xff0c;将数据集划分为&#xff1a;训练、开发&#xff08;验证&#xff09;、测试集会使迭代效率更高。 如果数据少的时候用传统的分割方法&#xff1a;60/20/20&#xff0c;数据量大的时候则都可以。 确保开发和…

LeetCode刷题练习--第1-10题

一、两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案&#xff0c;并且你不能使用两次相同的元素。 你可以按任意顺序返回…

线上游戏 线下陪玩线下家政陪聊陪诊陪游系统多少钱

关于线上游戏、线下陪玩、线下家政、陪聊、陪诊、陪游等系统的价格&#xff0c;由于这些服务涉及多个不同的行业和领域&#xff0c;且每个行业内部的定价也会因服务内容、服务质量、服务地区、服务提供商等多种因素而有所不同&#xff0c;因此很难给出一个统一的答案。 一般来…