Orange pi3 LTS Ubuntu22.04通过源码编译的方式安装opencv(C++版)

2023-11-14

硬件:orangepi 3 LTS

之前安装opencv的时候遇到了很多奇奇怪怪的错误,所以干脆重新写入系统后开始安装。

安装Ubuntu22.04的过程按照官方提供的用户手册来操做

官方用户手册下载链接:http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-3-LTS.html

安装必须的依赖

然后开始下载opencv所需的一下依赖

sudo apt-get install g++
sudo apt-get install cmake
sudo apt-get install unzip
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 python3-dev python3-numpy libtbb2 libtbb-dev

按照官方所提供的系统默认的下载源(清华源),上面的这些依赖都是可以直接安装好不会报错的。

接下来去修改下载源

sudo nano /etc/apt/sources.list

在最后面添加

deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu-ports/ xenial-security main 

保存然后退出

在终端输入

sudo apt update

到这一步可能会出现这样的报错

这是因为公钥产生的报错,报错后在终端输入

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5

然后重新输入

sudo apt update

更新完后我们再下载两个依赖

sudo apt-get install libjasper-dev libdc1394-dev

到这一步必须的依赖就下载完了。

下载源码

下载链接:https://opencv.org/releases/

这里我们选择下载源码,可以根据自己的需要下载对应的版本。

可以直接在Ubuntu里面下载,我这把选择的是在windows中下载好后通过Xftp传到Ubuntu中

打开Ubuntu终端,进入到刚刚接收opencv-4.5.1.zip的文件夹,再终端中输入

unzip opencv-4.5.1

opencv-4.5.1有一个小bug,用nano打开文件

nano ./opencv-4.5.1/modules/gapi/test/gapi_async_test.cpp

添加图片中框出来的内容,保存然后退出。

编译和安装

回到刚刚接收opencv-4.5.1.zip的文件夹,输入以下命令

cd opencv-4.5.1
mkdir build
cd build

开始Cmake编译

最基本的添加项可以按照这个来:

sudo cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..

输出以上内容即表示Cmake编译成功。

输入以下内容开始编译:

sudo make -j4

这个过程可能要花费一到两个小时

输出以上内容表示编译完成,然后在终端输入以下内容开始下载

sudo make install

输出以上内容表示安装完成。

环境配置

在终端中输入以下命令

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

输入以下内容:/usr/local/lib

保存然后退出。

在终端中输入:

sudo ldconfig 

然后配置环境变量:

在终端中输入:

sudo nano /etc/bash.bashrc

将下面的内容添加到文件末尾

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

保存然后退出。

随后在终端输入以下内容让配置生效。

source ~/.bashrc

到这里opencv源码编译安装就已经全部完成了。

验证

在终端输入以下命令可以检验安装是否正确

pkg-config --modversion opencv4

写一个简单的程序来测试以下:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    // 加载图像
    Mat image = imread("test.jpg");

    // 检查图像是否加载成功
    if(image.empty())
    {
        cout << "无法加载图像文件" << endl;
        return -1;
    }

    // 在屏幕上显示图像
    namedWindow("Display window", WINDOW_AUTOSIZE);
    imshow("Display window", image);

    // 等待按键按下
    waitKey(0);

    return 0;
}

讲上面的test.cpp和任意一张名为test.jpg的文件放到同一个文件夹中,然后打开终端,进入到该文件夹,在终端中输入以下命令编译

g++ test.cpp -o test `pkg-config opencv4 --cflags --libs`

编译完成生成可执行文件test

在终端中输入./test即可运行,程序效果为显示test.jpg。

这是一个测试摄像头的程序:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    VideoCapture cap(0); // 打开默认的摄像头

    if (!cap.isOpened()) // 检查摄像头是否成功打开
    {
        cout << "无法打开摄像头" << endl;
        return -1;
    }

    namedWindow("Camera", WINDOW_AUTOSIZE); // 创建窗口

    while (true)
    {
        Mat frame;
        cap >> frame; // 读取视频帧

        imshow("Camera", frame); // 在窗口中显示视频帧

        if (waitKey(30) == 'q') // 按下“q”键退出
        {
            break;
        }
    }

    return 0;
}

编译方法和上一个图片测试的程序一样,只需要修改文件名的生成的名字。

运行时提示无法打开摄像头可以试着把程序中“VideoCapture cap(0);"中的0改成1

参考文章:

https://blog.csdn.net/qq_38228260/article/details/126531323?ops_request_misc=&request_id=&biz_id=102&utm_term=ubantu22.04%20%E5%AE%89%E8%A3%85opencv&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-126531323.142^v73^control,201^v4^add_ask,239^v2^insert_chatgpt&spm=1018.2226.3001.4187

https://blog.csdn.net/weixin_45861610/article/details/127169289?ops_request_misc=&request_id=&biz_id=102&utm_term=ubantu22.04%20%E5%AE%89%E8%A3%85opencv&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-0-127169289.142^v73^control,201^v4^add_ask,239^v2^insert_chatgpt&spm=1018.2226.3001.4187

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

Orange pi3 LTS Ubuntu22.04通过源码编译的方式安装opencv(C++版) 的相关文章

  • 如何在 DataColumn.Expression 中使用 IF/ELSE 或 CASE?

    我有一个包含 1 列的表 状态 我想添加另一列名为 Action 的列 其值如下 如果 Status Yes 则 Action Go 否则 Action Stop 我使用以下代码添加到 操作 列中 但它不起作用 myDataTable Co
  • 有没有快速创建集合的方法?

    目前我正在创建一个像这样的新集 std set a s s insert a1 s insert a2 s insert a3 s insert a10 有没有办法创建s在一行 int myints 10 20 30 40 50 std s
  • QCombobox 向下箭头图像

    如何更改Qcombobox向下箭头图像 现在我正在使用这个 QSS 代码 但这不起作用 我无法删除向下箭头边框 QComboBox border 0px QComboBox down arrow border 0px background
  • 在实体框架拦截器中向 DbScanExpression 添加内部联接

    我正在尝试使用实体框架 CommandTree 拦截器通过 DbContext 向每个查询添加过滤器 为了简单起见 我有两个表 一个称为 User 有两列 UserId 和 EmailAddress 另一个称为 TenantUser 有两列
  • 我如何理解这个 C 类型声明?

    double bar int double double double double 在查看讲座幻灯片时 我发现了留给学生的练习 用简单的英语来说 什么是类型bar在这个 C 声明中 Please帮助我解决这个问题 我什至不知道从哪里开始
  • 为什么在创建矩阵类时使用向量不好?

    对于我的矩阵类 我做了 template
  • ASP.NET Web API 客户端 ProgressMessageHandler Post 任务卡在 WinForm 应用程序中

    我在用着HttpClient and ProgressMessageHandler来自MS ASP NET Web API 客户端库 http nuget org packages Microsoft AspNet WebApi Clien
  • 指向特征矩阵的指针数组

    我在代码中使用 Eigen 的 MatrixXd 矩阵 在某个时刻我需要一个 3D 矩阵 由于 Eigen 没有三维矩阵类型 因为它仅针对线性代数进行了优化 因此我创建了一个 MatrixXd 类型的指针数组 Eigen MatrixXd
  • 为什么这个没有特殊字符的正则表达式会匹配更长的字符串?

    我正在使用此方法来尝试查找匹配项 例如 Regex Match A2 TS OIL TS OIL RegexOptions IgnoreCase Success 我得到了真实的结果 我很困惑 我认为这应该返回 false 因为模式中没有特殊
  • ASP.Net Core 内容配置附件/内联

    我正在从 WebAPI 控制器返回一个文件 Content Disposition 标头值自动设置为 附件 例如 处置 附件 文件名 30956 pdf 文件名 UTF 8 30956 pdf 当它设置为附件时 浏览器将要求保存文件而不是打
  • 动态生成的控件 ID 返回为 NULL

    我可以在 Page PreInit 函数中创建动态控件 如何检索控件及其 ID 我的 C 代码用于创建动态控件之一 var btn new WebForms Button btn Text btn ID Addmore btn Click
  • fprintf() 线程安全吗?

    我正在为野人就餐问题的某些变量编写一个 C 解决方案 现在 我创建线程 每个线程都将 FILE 获取到同一个调试文件 在线程内我正在使用 fprintf 进行一些打印 打印的语句不受任何类型的互斥锁等保护 我没有在调试文件中观察到任何交错行
  • 单例模式和 std::unique_ptr

    std unique ptr唯一地控制它指向的对象 因此不使用引用计数 单例确保利用引用计数只能创建一个对象 那么会std unique ptr与单例执行相同 单例确保只有一个实例属于一种类型 A unique ptr确保只有一个智能指针到
  • Visual Studio Code:如何配置 includePath 以获得更好的 IntelliSense 结果

    我是使用 Visual Studio Code 的完全初学者 我不知道我在做什么 我已经四处搜索 也许还不够 但我找不到像我这样的人如何配置的简单解释c cpp properties json每当我单击带有绿色波浪线下划线的行旁边的黄色灯泡
  • 如何通过 JsonConvert.DeserializeObject 在动态 JSON 中使用 null 条件运算符

    我正在使用 Newtonsoft 反序列化已知的 JSON 对象并从中检索一些值 如果存在 关键在于对象结构可能会不断变化 因此我使用动态来遍历结构并检索值 由于对象结构不断变化 我使用 null 条件运算符来遍历 JSON 代码看起来像这
  • .NET Core 中的跨平台文件名处理

    如何处理文件名System IO以跨平台方式运行类以使其在 Windows 和 Linux 上运行 例如 我编写的代码在 Windows 上完美运行 但它不会在 Ubuntu Linux 上创建文件 var tempFilename Dat
  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复
  • 使用restsharp序列化对象并将其传递给WebApi而不是序列化列表

    我有一个看起来像的视图模型 public class StoreItemViewModel public Guid ItemId get set public List
  • 新任务中使用的依赖注入服务

    我在需要时使用依赖项注入来访问我的服务 但我现在想要创建一个并发任务 但这会由于依赖项注入对象及其生命周期而导致问题 我读过这篇文章 标题 防止多线程 Link http mehdi me ambient dbcontext in ef6
  • 在简单注入器中解析具有自定义参数的类

    我正在使用以下命令创建 WPF MVVM 应用程序简易注射器作为 DI 容器 现在 当我尝试从简单注入器解析视图时遇到一些问题 因为我需要在构造时将参数传递到构造函数中 而不是在将视图注册到容器时 因此这不是适用的 简单注入器将值传递到构造

随机推荐

  • 动态规划之详解01背包和完全背包

    一 总述 在动态规划中 01背包和完全背包可以说是动态规划最典型的应用了 先介绍一下定义 动态规划 英 Dynamic Programming 简称DP 动态规划是一种多阶段决策最优解模型的思想 如果某 问题有很多重叠 问题 使 动态规划
  • Unity调试真机VS中找不到手机设备

    这个问题困扰了我好几天 网上各种百度没有解决 在VS中 调试 gt 附加 Unity 调试程序 一直找不到AndroidPlayer 最后检查了一下手机的系统版本是10 0 而我电脑中下载的版本缺少10 0的一些配置 Android SDK
  • Eclipse安装FindBugs插件

    上菜 一 FindBugs说明 Findbugs 是一个静态分析工具 它检查类或者 JAR 文件 将字节码与一组缺陷模式进行对比以发现可能的问题 利用这个工具 就可以在不实际运行程序的情况对软件进行分析 它可以帮助改进代码的质量 二 Fin
  • COLA之架构演变(一)

    一 常用架构 1 分层架构 2 CQRS架构 3 六边形架构 4 洋葱圈架构 二 COLA介绍 COLA 是 Clean Object Oriented and Layered Architecture的缩写 代表 整洁面向对象分层架构 目
  • Eclipse中配置Tomcat热部署

    在Eclipse中配置VM参数使Tomcat自动加载部署修改后的项目 如果在第二张图中选择了通过xml文件发布项目则还需要配置在xml中配置文件的信息
  • 什么是七牛云?七牛云的使用

    一 什么是七牛云 七牛云是国内知名的云计算及数据服务提供商 主要提供了现在网络上占据百分之就是打非结构化数据 也就是图片 音频 视频的云存储服务 二 七牛云的使用 1 注册账号 2 绑定邮箱 3 实名认证 必须进行 4 创建一个存储空间 5
  • 高效的学习方法(几个小技巧)

    几个学习小技巧 1 价值导向性学习法 发现 赋予学习内容意义或者使命感 价值导向性学习法是一种高效的思维方式 可以传递出这样的一种观点 学习上有意义 有价值的行为 而不是消极的 被动式的学习 首先 最重要的是赋予学习内容以意义 其次 定制清
  • RK3399 ,64位,Ubuntu16.04系统安装ROS-kinetic方法总结

    1 第一步是修改hosts vi etc hosts 在127 0 0 1 localhost 后边添加 rpdzkj 自己的ubuntu用户名 127 0 0 1 localhost rpdzkj 设置sources list 我选择的是
  • LaTeX公式符号总结(Markdown适用)

    文章目录 1 希腊字母 小写字母 大写字母 2 符号 箭头符号 二元运算符 逻辑符号 集合符号 特殊符号 3 运算和函数 4 矩阵和多行列式 5 括号与空格 6 颜色 字体颜色 背景颜色 RGB颜色和自定义 默认支持颜色 本文从 Typor
  • 开发日记(4)如何将Bitmap转换成Uri?

    1 bitmap to uri Uri uri Uri parse MediaStore Images Media insertImage getContentResolver bitmap null null 2 uri to bitma
  • 阿里:MySQL 单表数据最大不要超过多少行?为什么?

    点击上方 芋道源码 选择 设为星标 管她前浪 还是后浪 能浪的浪 才是好浪 每天 10 33 更新文章 每天掉亿点点头发 源码精品专栏 原创 Java 2021 超神之路 很肝 中文详细注释的开源项目 RPC 框架 Dubbo 源码解析 网
  • 2023AIGC人才趋势洞察报告

    导读 自ChatGPT于2022年11月发布至今 其大大超出预期的 涌现 能力使得AIGC赛道被彻底点燃 从人力资源角度观察 AIGC相关的岗位明显增加的同时 人才对于此类岗位的投递也愈发积极 值得注意的是 AIGC并不单单是属于ICT行业
  • iOS APP 如何做才安全

    本来 写了一篇 iOS 如何做才安全 逆向工程 Reveal IDA Hopper https抓包 等 发现文章有点杂 并且 iOS 如何做才安全 这部分写的越来越多 觉得 分出来更清晰一点 所以拆成两部分 同时也是为了大家能 共同讨论 毕
  • osgEarth加载SXEarth下载的mbtiles地图文件(win10)

    使用晟兴地球 SXEarth 通过互联网下载mbtiles格式的地图文件 然后使用osgEarth加载 晟兴地球 SXEarth 下载地图文件 晟兴地球SXEarth是一款永久免费的3DGIS平台软件 由北京晟兴科技有限公司开发 支持在线G
  • 二分法,平衡二叉树、B树、B+树

    二分法 平衡二叉树 B树 B 树 二分法 二分法查找 算法要求 比较次数 二分法到二叉树 平衡二叉树 平衡二叉树概念 平衡二叉树的构建规则 平衡二叉树特点 B树 B tree B树的构建规则 B树的查询流程 B 树 B 树构建规则 B 树和
  • 【华为OD机试 2023】货币单位换算(C++ Java JavaScript Python)

    华为od机试题库 华为OD机试2022 2023 C Java JS Py https blog csdn net banxia frontend category 12225173 html 华为OD机试2023最新题库 更新中 C Ja
  • 成功解决Win7 64位系统下GraphEdit 不能显示Directshow.net远程图表的问题

    首先问题如题 我是Win7 64位旗舰版操作系统 VS2010 使用Directshow net开发播放器程序 结果发现通过以前使用的GraphEdit无论如何不能看到远程图表 不管是重新注册spy dll PropPage dll等文件
  • 倒沖法-線邊倉

    倒冲法 倒冲法 Back flush 目录 隐藏 1 倒冲法概述 2 倒冲法的应用 3 倒冲法的隐性会计处理 1 4 倒冲错误的产生原因及处理程序 1 5 参考文献 编辑 倒冲法概述 倒冲法 Back flush 是ERP系统根据产成品收料
  • git错误 error: failed to push some refs to ‘https://github.com/...

    1 解决办法 git错误 error failed to push some refs to https github com 问题原因 远程库与本地库不一致造成的 在hint中也有提示把远程库同步到本地库就可以了 解决办法 使用命令行 g
  • Orange pi3 LTS Ubuntu22.04通过源码编译的方式安装opencv(C++版)

    硬件 orangepi 3 LTS 之前安装opencv的时候遇到了很多奇奇怪怪的错误 所以干脆重新写入系统后开始安装 安装Ubuntu22 04的过程按照官方提供的用户手册来操做 官方用户手册下载链接 http www orangepi