ubuntu22.04@laptop OpenCV定制化安装

ubuntu22.04@laptop OpenCV定制化安装

  • 1. 源由
  • 2. 默认配置
  • 3. 定制配置
  • 4. 定制安装
  • 5. 定制OpenCV-4.9.0
    • 5.1 修改opencv.conf
    • 5.2 加载so文件
    • 5.3 修改bash环境变量
    • 5.4 增加pkgconfig
    • 5.5 检查OpenCV-4.9.0安装
  • 6. 总结
  • 7. 参考资料

1. 源由

目前,能Google到的代码层次不齐,且OpenCV库本身就在不断迭代更新。

因此,在实际使用过程涉及到版本之间的差异,同样环境不同OpenCV版本的对比验证就显得尤为重要。

本章节就将针对这个特殊的需求进行整理,供需要使用的朋友进行参考。

2. 默认配置

通常通过apt工具安装deb文件,都是安装在默认位置。

  • /usr/local/lib so文件位置
  • /usr/local/include h头文件位置

3. 定制配置

定制化的安装流程,需要在编译的时候指定安装文件临时存放的位置。

注:这里引用了一些宏定义,后续github脚本版本中提供。

-D CMAKE_INSTALL_PREFIX=$SNAPDRAGONFLY_CURRENT_DIR_PATH/installation/opencv-"$cvVersion" \

比如:期望安装路径为:/opt/opencv-4.9.0

-D CMAKE_INSTALL_PREFIX=/opt/opencv-4.9.0 \

4. 定制安装

整个代码编译过程详见:ubuntu22.04@laptop OpenCV安装

注:配置时,请增加宏定义符号-D CMAKE_INSTALL_PREFIX=/opt/opencv-4.9.0

cmake -D CMAKE_BUILD_TYPE=RELEASE \-D WITH_TBB=ON \-D BUILD_TBB=OFF \-D WITH_V4L=ON \-D WITH_QT=ON \-D WITH_OPENGL=ON \-D OPENCV_GENERATE_PKGCONFIG=ON \-D INSTALL_PYTHON_EXAMPLES=ON \-D INSTALL_C_EXAMPLES=ON \-D CMAKE_INSTALL_PREFIX=/opt/opencv-4.9.0 \-D OPENCV_PYTHON3_INSTALL_PATH=$SNAPDRAGONFLY_CURRENT_DIR_PATH/opencv-$cvVersion-py3/lib/python3.10/site-packages \-D OPENCV_ENABLE_NONFREE=ON \-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \-D PYTHON_EXECUTABLE=../../opencv-$cvVersion-py3/bin/python3 \-D BUILD_EXAMPLES=ON ..

脚本make install执行完成后,所有文件将会直接安装到/opt/opencv-4.9.0

5. 定制OpenCV-4.9.0

5.1 修改opencv.conf

$ sudo vim /etc/ld.so.conf.d/opencv.conf
$ sudo cat /etc/ld.so.conf.d/opencv.conf
/opt/opencv-4.9.0
$ ls /opt/
opencv-4.9.0

5.2 加载so文件

$ sudo ldconfig

5.3 修改bash环境变量

$ sudo vi /etc/bash.bashrc
$ sudo cat /etc/bash.bashrc |tail -n 2
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
$ source /etc/bash.bashrc
$ echo $PKG_CONFIG_PATH
:/usr/local/lib/pkgconfig
$ sudo mkdir -p /usr/local/lib/pkgconfig

5.4 增加pkgconfig

$ cd /opt/opencv-4.9.0
$ find ./ -name opencv4.pc
./lib/pkgconfig/opencv4.pc
$ sudo cp ./lib/pkgconfig/opencv4.pc /usr/local/lib/pkgconfig

5.5 检查OpenCV-4.9.0安装

$ pkg-config --cflags opencv4
-I/opt/opencv-4.9.0/include/opencv4

6. 总结

安装上述方法,可以安装多个OpenCV环境,比如:

  • OpenCV 4.0.0
  • OpenCV 4.9.0

仅需要在使用的时候,替换不同版本的opencv4.pc配置文件即可。

7. 参考资料

【1】ubuntu22.04@laptop OpenCV安装

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

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

相关文章

openkylin(Debian系)安装nginx及安装前需要的准备

前言 现在很多linux系统都可以使用高级包管理工具安装软件了,但是在像是 openkylin这些新系统中,好多软件包虽然有,但是因为其依赖的包还没有做好,所 以安装会提示你一大堆依赖错误。所以还是要自己来编译安装咯。安装前准备&…

PoEAA笔记-7.分布策略

本文摘抄自PoEAA,详细信息请阅读本书 7.1 分布对象的诱惑 透明性非常有用,但虽然有很多东西在分布对象中可以是透明的,但性能却不在其中,尽管上面的架构师是为了提高性能而使用分布组件的,但他的设计只会影响性能&…

RCS系统之:机器人状态

在设计RCS系统平台时,机器人总共设计状态有: 离线模式; 如图,18号机器人呈灰黑色,表示机器人没有上电状态 工作模式; 如图,10号机器人成绿色,表示机器人处于工作模式,等…

如何区分Linux中标准分区与lvm分区

以下是标准分区 以下包含lvm分区

Android14音频进阶:MediaPlayerService如何启动AudioTrack 上篇(五十五)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀 人生格言: 人生从来没有捷径,只…

练习题解(关于最小生成树)

目录 1.【模板】最小生成树 2.无线通讯网 3.拆地毯 4.营救 1.【模板】最小生成树 P3366 【模板】最小生成树 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则…

【图像拼接】论文精读:A Virtual Reality Video Stitching System Based on Mirror Pyramids

第一次来请先看这篇文章:【图像拼接(Image Stitching)】关于【图像拼接论文精读】专栏的相关说明,包含专栏使用说明、创新思路分享等(不定期更新) 图像拼接系列相关论文精读 Seam Carving for Content-Aware Image ResizingAs-Rigid-As-Possible Shape ManipulationAdap…

TOML格式配置的frp服务搭建

从frp v0.52.0 版本开始,frp 将TOML作为配置文件格式。INI 格式已被弃用,并将在未来的发布中移除。因此,frp v0.52.0 及更高版本的配置文件默认为TOML格式。 项目地址 GitHub:https://github.com/fatedier/frp/releases 服务端…

离线场景下任意文档的在线预览及原样格式翻译,不依赖其他厂商接口非侵入式一行js代码实现网站的翻译及国际化,可配置使用多种翻译语言

离线场景下任意文档的在线预览及原样格式翻译,不依赖其他厂商接口非侵入式一行js代码实现网站的翻译及国际化,可配置使用多种翻译语言。 要实现翻译需要解决以下3个主要问题: 1)from:内容本身的语言类型是什么&#xf…

别人还在集五福,星河社区开发者已经奖品拿到手软了!

AI新年新玩法你是否曾为AI应用的神奇而惊叹?你是否想过用AI为你定制新年写真?无需编程!! 飞桨星河社区帮你实现,还可赢取新年礼包! 先速来看看攻略吧!页面底部见活动详情。 玩法1攻略&#xff…

Multisim14.0仿真(五十六)74LS76双JK触发器应用设计

一、74LS76简介: 74LS76是 带有独立的 JK 时钟脉冲、直接清除输入和直接设置的双JK触发器。当时钟设置为高电平时,将接收数据

什么是UI设计?

用户界面(UI)它是人与机器互动的载体,也是用户体验(UX)一个组成部分。用户界面由视觉设计 (即传达产品的外观和感觉) 和交互设计 (即元素的功能和逻辑组织) 两部分组成。用户界面设计的目标是创建一个用户界面&#xf…

9.0 Zookeeper 节点特性

本章节介绍一下 zookeeper 的节点特性和简单使用场景,正是由于这些节点特性的存在使 zookeeper 开发出不同的场景应用。 1、同一级节点 key 名称是唯一的 实例: $ ls / $ create /runoob 2 已存在 /runoob 节点,再次创建会提示已经存在。 …

缓存异常与一致性

缓存异常: 缓存穿透:请求缓存和数据库都不存在的数据,每次都要查数据库,缓存好像没有起到拦截流量作用。 采用布隆过滤器过滤一定不存在key请求、key逻辑校验,不存在key请求设置缓存key-null布隆过滤器采用多个hash函数…

MySQL:从基础到实践(简单操作实例)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 下载前言一、MySQL是什么?二、使用步骤1.引入库2.读入数据 提交事务查询数据获取查询结果总结 下载 点击下载提取码888999 前言 在现代信息技术的世界…

Java基于微信小程序的医院挂号系统

文章目录 1 简介2 技术栈3 系统目标3.2 系统功能需求分析3.2.1 功能需求分析 4 系统模块设计4.1 数据库模块设计 5 系统的实现5.1 微信小程序个人中心5.2 科**室内容查看的实现**5.3 预约挂号的实现5.4 后台管理界面实现5.5 医生预约管理5.6 医生信息管理 参考文献7 推荐阅读8 …

【C++】类和对象4:日期类的实现(成员函数+运算符重载)

前言 之前我们已经学习了四个默认成员函数(构造、析构、拷贝构造、运算符重载) 今天我们就来尝试用已经学到的知识进行日期类的完整实现 提示: 依然是分成三个文件来写 只是在讲解的时候就不区分文件了 完整的代码在文章最后 并且之前文章中…

【Git教程】(一)基本概念 ——工作流、分布式版本控制、版本库 ~

Git教程 基本概念 1️⃣ 为什么要用 Git2️⃣ 为什么要用工作流3️⃣ 分布式版本控制4️⃣ 版本库5️⃣ 简单的分支创建与合并🌾 总结 在本章中,将介绍一个分布式版本控制系统的设计思路,以及它与集中式版本控制系统的不同之处。除此之外&am…

未来之梦:畅想人工智能操控手机的辉煌时代

引言: 在当今数字化快速发展的时代,人工智能技术正日益深入我们的生活。其中,手机作为人们日常生活不可或缺的一部分,其未来将如何受到人工智能技术的影响,引发了广泛的关注和研究。本文将深入探讨人工智能操控手机的…

区块链大解码:深入了解Web3的核心技术

随着技术的迅速发展,Web3正逐渐崭露头角,成为数字时代的引领者。其中,区块链技术作为Web3的核心,扮演着至关重要的角色。本文将深入解码区块链技术,探讨其在Web3时代的关键作用以及未来发展趋势。 1. 区块链基础原理 …