当前位置: 首页 > news >正文

ubuntu16.04环境轻松安装和应用opencv4.9.0(基于源码编译)

目录

一、环境准备

1、安装cmake

2、安装依赖

3、从github上下载opencv4.9.0.zip

二、安装opencv4.9.0

1、解压4.9.0.zip

2、进入build目录编译

3、安装编译好的相关库

4、修改opencv配置文件并使其生效

5、添加PKG_CONFIG路径,并使其生效

三、opencv环境验证 

1、编译示例文件

2、运行示例 

3、举一反三


一、环境准备


1、安装cmake

sudo apt-get install cmake

2、安装依赖

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

3、从github上下载opencv4.9.0.zip

关于如何从github上快速下载需要的资源,在这里不详述,后面的文章进行补充😊

root@ubuntu-virtual-machine:/home/ubuntu/C++/opencv4.9.0# wget https://github.com/opencv/opencv/archive/4.9.0.zip
--2024-01-26 21:00:01--  https://github.com/opencv/opencv/archive/4.9.0.zip
正在解析主机 github.com (github.com)... 140.82.xxx.xxx
正在连接 github.com (github.com)|140.82.xxx.xxx|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 302 Found
位置:https://codeload.github.com/opencv/opencv/zip/refs/tags/4.9.0 [跟随至新的 URL]
--2024-01-26 21:00:03--  https://codeload.github.com/opencv/opencv/zip/refs/tags/4.9.0
正在解析主机 codeload.github.com (codeload.github.com)... 20.205.xxx.xxx
正在连接 codeload.github.com (codeload.github.com)|20.205.xxx.xxx|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 未指定 [application/zip]
正在保存至: “4.9.0.zip”

4.9.0.zip                                         [               <=>                                                                              ]  92.98M  3.04MB/s    in 35s     

2024-01-26 21:00:39 (2.64 MB/s) - “4.9.0.zip” 已保存 [97492524]

这里下载时间用了35秒就将opencv4.9.0(近100M)的安装包下载好了(●'◡'●)

二、安装opencv4.9.0

1、解压4.9.0.zip

unzip 4.9.0.zip

2、进入build目录编译

(1)cmake编译

cd opencv-4.9.0
mkdir build
cmake -D CMAKE_INSTALL_PREFIX=/usr/local -D CMAKE_BUILD_TYPE=Release ..

 

编译结束后看到最后三行日志表示编译OK
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ubuntu/C++/opencv4.9.0/opencv-4.9.0/build

(2)make编译
make -j8

......
[100%] Linking CXX executable ../../bin/opencv_test_objdetect
[100%] Built target opencv_perf_video
[100%] Built target opencv_test_objdetect
[100%] Linking CXX executable ../../bin/opencv_test_core
[100%] Built target opencv_test_core

3、安装编译好的相关库

sudo make install
执行后的日志最后几行:

-- Installing: /usr/local/bin/opencv_annotation
-- Set runtime path of "/usr/local/bin/opencv_annotation" to "/usr/local/lib"
-- Installing: /usr/local/bin/opencv_visualisation
-- Set runtime path of "/usr/local/bin/opencv_visualisation" to "/usr/local/lib"
-- Installing: /usr/local/bin/opencv_interactive-calibration
-- Set runtime path of "/usr/local/bin/opencv_interactive-calibration" to "/usr/local/lib"
-- Installing: /usr/local/bin/opencv_version
-- Set runtime path of "/usr/local/bin/opencv_version" to "/usr/local/lib"
-- Installing: /usr/local/bin/opencv_model_diagnostics
-- Set runtime path of "/usr/local/bin/opencv_model_diagnostics" to "/usr/local/lib"

4、修改opencv配置文件并使其生效

sudo vim  /etc/ld.so.conf.d/opencv.conf 
/usr/local/lib  

sudo ldconfig

5、添加PKG_CONFIG路径,并使其生效

sudo vim /etc/bash.bashrc  

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

source /etc/bash.bashrc

 编译安装成功后,我们会发现/usr/local/lib目录中会存在一些opencv相关的so库。

 关于PKG_CONFIG,在这里不详述,后续的文章进行补充😊

三、opencv环境验证 

1、编译示例文件

root@ubuntu-virtual-machine:/home/ubuntu/C++/opencv4.9.0/opencv-4.9.0/samples/cpp/example_cmake# cmake .
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found OpenCV: /usr/local (found version "4.9.0") 
-- OpenCV library status:
--     config: /usr/local/lib/cmake/opencv4
--     version: 4.9.0
--     libraries: opencv_features2d;opencv_objdetect;opencv_photo;opencv_videoio;opencv_imgcodecs;opencv_dnn;opencv_stitching;opencv_ml;opencv_flann;opencv_highgui;opencv_imgproc;opencv_video;opencv_calib3d;opencv_core
--     include path: /usr/local/include/opencv4
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ubuntu/C++/opencv4.9.0/opencv-4.9.0/samples/cpp/example_cmake

 

root@ubuntu-virtual-machine:/home/ubuntu/C++/opencv4.9.0/opencv-4.9.0/samples/cpp/example_cmake# make
Scanning dependencies of target opencv_example
[ 50%] Building CXX object CMakeFiles/opencv_example.dir/example.cpp.o
[100%] Linking CXX executable opencv_example
[100%] Built target opencv_example

2、运行示例 

root@ubuntu-virtual-machine:/home/ubuntu/C++/opencv4.9.0/opencv-4.9.0/samples/cpp/example_cmake#./opencv_example

运行结果:

935c9bb7452f4876b6e4e6e56c0b8b2a.png 

3、举一反三

在samples/cpp/test目录下,编写测试代码:

#include <opencv2/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>using namespace cv;int main()
{std::string image_path = samples::findFile("test.jpg");Mat img = imread(image_path, IMREAD_COLOR);if(img.empty()){std::cout << "Could not read the image: " << image_path << std::endl;return 1;}imshow("Display window", img);return 0;
}

 我们可以看到,将一张图片显示出来了

92c0048df8cc435eaec797839ec0fee7.png

【欢迎关注编码小哥,学习更多实用的编程知识】 

 

相关文章:

ubuntu16.04环境轻松安装和应用opencv4.9.0(基于源码编译)

目录 一、环境准备 1、安装cmake 2、安装依赖 3、从github上下载opencv4.9.0.zip 二、安装opencv4.9.0 1、解压4.9.0.zip 2、进入build目录编译 3、安装编译好的相关库 4、修改opencv配置文件并使其生效 5、添加PKG_CONFIG路径&#xff0c;并使其生效 三、opencv环境…...

FastBee开源物联网平台2.0开源版发布啦!!!

一、项目介绍 物美智能(wumei-smart)更名为蜂信物联(FastBee)。 FastBee开源物联网平台&#xff0c;简单易用&#xff0c;更适合中小企业和个人学习使用。适用于智能家居、智慧办公、智慧社区、农业监测、水利监测、工业控制等。 系统后端采用Spring boot&#xff1b;前端采用…...

【NeRF和NLP】一些观察感悟,碎碎念

NeRF的paper&#xff0c;有几个感想&#xff1a; NeRF读的时候感觉和diffusion思路特别像&#xff0c;训练目标是一个很小很小的子步骤&#xff0c;大大简化了训练难度NeRF建模的是“真实”世界&#xff0c;其用模型隐含的存储了真实世界的体素&#xff08;场&#xff09;模型…...

Python程序设计 基础数据类型

1.1 编程规范 注释 python注释也有自己的规范&#xff0c;在文章中会介绍到。注释可以起到一个备注的作用&#xff0c;团队合作的时候&#xff0c;个人编写的代码经常会被多人调用&#xff0c;为了让别人能更容易理解代码的通途&#xff0c;使用注释是非常有效的。 在说规范…...

浅谈安科瑞智能照明系统在马来西亚国家石油公司项目的应用

摘要&#xff1a;随着社会经济的发展及网络技术、通信技术的提高&#xff0c;人们对照明设计提出了新的要求&#xff0c;它不仅要控制照明光源的发光时间、 亮度&#xff0c;而且与其它系统来配合不同的应用场合做出相应的灯光场景。本文介绍了马亚西亚石油公司智能照明项目的应…...

Java面对对象

Java面向对象 面对对象概述&#xff0c;类与对象&#xff0c;继承&#xff0c;重写与重载&#xff0c;多态&#xff0c;抽象&#xff0c;封装&#xff0c;包&#xff0c;泛型&#xff0c;异常 面对对象概述 什么是面向对象&#xff08;OOP&#xff09; 面向对象(Object Ori…...

代码随想录算法训练营|day24

第七章 回溯算法 77.组合代码随想录文章详解总结 77.组合 以n5,k3为例 (1)for循环遍历&#xff0c;递归选择符合要求的值加入path&#xff0c;len(path)k时&#xff0c;返回 statrtIndex保证每次递归取到的值不重复 剪枝&#xff1a;i<n-(k-len(path))1 后续需要k-len(pat…...

嵌入式学习日记 16

共用体 union 共用体名 { 成员列表; //各个变量 }; //表示定义一个共用体类型 注意&#xff1a; 1.共用体 初始化 --- 只能给一个值&#xff0c;默认是给到第一个成员变量的 2.共用体成员变量辅助 共用体用的数据最终存储的 --- 应该是最后一次给到的值。 但是只能…...

【Vue.js设计与实现】第一篇:框架设计概览-阅读笔记(完结)

从高层设计的角度去探讨框架需要关注的问题。 参考&#xff1a;速读《Vue.js 设计与实现》 - 掘金 (juejin.cn) 系列目录&#xff1a; 标题博客第一篇&#xff1a;框架设计概览【Vue.js设计与实现】第一篇&#xff1a;框架设计概览-阅读笔记第二篇&#xff1a;响应系统【Vue.…...

数据结构—动态查找表

动态查找介绍 1. 动态查找的引入&#xff1a;当查找表以线性表的形式组织时&#xff0c;若对查找表进行插入、删除或排序操作&#xff0c;就必须移动大量的记录&#xff0c;当记录数很多时&#xff0c;这种移动的代价很大。 2. 动态查找表的设计思想&#xff1a;表结构本身是…...

Hbase-2.4.11_hadoop-3.1.3集群_大数据集群_SSH修改默认端口22为其他端口---记录025_大数据工作笔记0185

其实修改起来非常简单,但是在大数据集群中,使用到了很多的脚步,也需要修改, 这里把,大数据集群,整体如何修改SSH端口,为22022,进行总结一下: 0.hbase-2.4.11的话,hbase集群修改默认SSH端口22,修改成22022,需要修改 需要修改/opt/module/hbase-2.4.11/conf/hbase-env.sh 这里…...

c++学习第十四讲---STL常用容器---vector容器

vector容器&#xff1a; 1.vector基本概念&#xff1a; vector功能与数组类似&#xff0c;与数组不同的是&#xff0c;vector可以动态扩展。 2.vector构造函数&#xff1a; vector<T> v; //默认构造函数&#xff0c;创建数据类型T的容器 ve…...

数据结构-内部排序

简介 排序&#xff08;Sorting&#xff09;&#xff1a;将一个数据元素&#xff08;或记录&#xff09;的任意序列&#xff0c;重新排列成一个按关键字有序的序列 排序算法分为内部排序和外部排序 内部排序&#xff1a;在排序期间数据对象全部存放在内存的排序 外部排序&am…...

Qt加载网页崩溃 ASSERT:“m_adapterClient“ in file ...

1、软件启动后加载网页无异常&#xff0c;点击按钮&#xff0c;加载新网页时崩溃 崩溃代码&#xff1a; QWebEngineView *createWindow(QWebEnginePage::WebWindowType type) { Q_UNUSED(type); return this; } 2、原因 Qt只是调用谷歌的浏览器引擎&#xff…...

合约短线高胜率策略-扭转乾坤指标使用说明

扭转乾坤指标使用说明 行情判断 双绿线 多趋势双红线 空趋势大绿线 小红线 多震荡大红线 小绿线 空震荡 进场条件 趋势行情进场 多趋势 多信号 底金叉 做多空趋势 空信号 顶死叉 做空 震荡行情进场 多震荡 多信号 底金叉 做多多震荡 空信号 顶死叉 做空空…...

DAY37:贪心算法738

今天写了一道题目&#xff0c;顺便看了一个很好的总结&#xff0c;这篇博客可以跳过。 Leetcode&#xff1a;738 单调递增的数字 因为最大的数字是9&#xff0c;当出现后面位数的数字比前面位数的数字小的时候&#xff0c;就把后面的数字都变成9&#xff0c;前面那个数字--。…...

计算机中的缓存与内存

在现代计算机系统中&#xff0c;缓存和内存扮演着至关重要的角色&#xff0c;它们共同协作以实现高性能和高效率的数据处理。本文将深入探讨缓存和内存的概念、功能以及它们在计算机系统中的作用。 缓存与内存&#xff1a;概念与功能 1. 内存&#xff08;RAM&#xff09;&…...

2.1总结

还是一样水更一天&#xff0c;就随便做了几个题&#xff0c;有一个周期有点长&#xff0c;后面更一篇长的 随手刷的一道水题&#xff0c;就不往今天的行程单添了 问题&#xff1a;最大公约数 题解&#xff1a;题目太水了&#xff0c;就是求三个数&#xff0c;其中两组的最大公…...

探索Pyecharts:绘制多彩日历图的艺术与技巧

Pyecharts绘制多种炫酷日历图参数说明代码实战 导言 在数据可视化领域&#xff0c;日历图是一种直观展示时间和数据关系的方式。Pyecharts是一个基于Echarts的Python库&#xff0c;可以方便地绘制各种图表&#xff0c;包括炫酷的日历图。本篇博客将介绍Pyecharts中绘制多种炫…...

响应标头Allow-Headers和Expose-Headers的区别和用法

Access-Control-Allow-Headers和Access-Control-Expose-Headers&#xff0c;简单的说&#xff0c;这两者都是前端和后端之间通过header传递数据的&#xff0c;主要的区别就是方向。 Access-Control-Allow-Headers 举个例子&#xff0c;如果我们前端向后端发起请求&#xff0c…...

UEFITOOL 0.28:开源UEFI固件解析与修改的终极指南

UEFITOOL 0.28&#xff1a;开源UEFI固件解析与修改的终极指南 【免费下载链接】UEFITOOL28 项目地址: https://gitcode.com/gh_mirrors/ue/UEFITOOL28 你是否曾经好奇计算机启动时BIOS固件内部究竟发生了什么&#xff1f;或者需要修改固件却无从下手&#xff1f;UEFITO…...

如何在OBS Studio中免费使用VST插件:终极音频优化完整指南

如何在OBS Studio中免费使用VST插件&#xff1a;终极音频优化完整指南 【免费下载链接】obs-vst Use VST plugins in OBS 项目地址: https://gitcode.com/gh_mirrors/ob/obs-vst 想要让直播或录制的声音质量瞬间达到专业级别&#xff0c;却不想花费高昂费用购买专业音频…...

java之微信机器人二次开发文档

WTAPI框架weixin ipad 协议 在微信个人号二次开发中的应用&#xff0c;涵盖技术架构、核心功能、开发流程及安全合规要点&#xff0c;为开发者提供系统化解决方案。 ⚡ 核心能力 好友管理&#xff1a;添加好友、删除好友、修改备注、创建标签、获取好友列表、搜索好友信息 消息…...

在 Clean Core 约束下扩展 SAP S/4HANA 标准 OData API

我们正在做的事情很具体,S/4HANA 后端已经能够发布产品主数据相关的 Enterprise Event,事件经过 Integration Suite、Event Mesh、Advanced Event Mesh,再进入 Kafka Event Broker,消费系统按照 product type 订阅不同的 material event。链路跑通以后,业务方很快发现一个…...

乡村景区智慧垂钓破局增收!巨有科技激活乡村“渔乐”经济

垂钓作为国民级休闲活动&#xff0c;拥有超1.2亿爱好者&#xff0c;是乡村文旅中极具潜力的黄金业态。然而&#xff0c;多数乡村钓场仍停留在“一根竿、一个塘”的粗放运营阶段&#xff0c;面临计费混乱、管理成本高、体验同质化、增收乏力等困境。巨有科技聚焦乡村场景&#x…...

0522晨间日记

# 0522晨间日记 - 关键词 - 上午- 过站的问题- 昨天有一个产品卡在母子码绑定了- 早晨的各类菜单没有同步&#xff0c;不知道怎么做。- 最终明确是&#xff1a; 因为一个产品对应2种的条码导致的卡住了- 需要在条码规则上增加多个检查对应的- 总结- 最近一周西门子遇到的问题- …...

AI系统6%误差率为何触发链式崩溃?生产级监控实战指南

1. 项目概述&#xff1a;当6%的失误率成为系统性风险的临界点“The 6% Problem: Why AI Safety Monitoring Isn’t Optional Anymore”这个标题乍看像一篇科技评论&#xff0c;但在我过去十年参与过27个AI系统落地项目&#xff08;涵盖金融风控、医疗辅助诊断、工业质检、政务智…...

液压液水解安定性检测:核心原理与全行业应用场景解析

液压系统是各类工业、工程、交通设备的动力核心&#xff0c;而液压液作为系统的工作介质&#xff0c;其性能稳定性直接决定设备的运行精度、故障率以及使用寿命。在复杂工况中&#xff0c;水分侵入是导致液压液失效的核心诱因之一&#xff0c;油液遇水发生水解反应后&#xff0…...

C++内存对齐与布局优化

C内存对齐与布局优化内存对齐是编译器为了提高内存访问效率而采用的策略。理解内存对齐规则对于优化结构体大小和提高程序性能至关重要。结构体的内存布局受对齐规则影响&#xff0c;可能包含填充字节。#include #includestruct Unaligned { char a; int b; char c; };struct A…...

告别ifconfig!用ip命令和ethtool搞定Linux网卡状态排查(附实战案例)

告别ifconfig&#xff01;用ip命令和ethtool搞定Linux网卡状态排查&#xff08;附实战案例&#xff09; 在Linux服务器运维中&#xff0c;网络故障排查是最常见的任务之一。记得去年深夜处理一次线上事故时&#xff0c;面对一台突然失联的数据库服务器&#xff0c;我习惯性地敲…...