编译基于armV8架构的opencv,并在rock3a开发板上运行

这篇具有很好参考价值的文章主要介绍了编译基于armV8架构的opencv,并在rock3a开发板上运行。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

近期在基于arm开发板做图像识别任务开发时,需要用到Opencv库

之前在做rknpu开发时,开发sdk里面已经集成了opencv 但是该opencv开发包不能实现imshow/VideoCapture等函数,经过调研,决定对opencv源代码进行编译,生成armv8架构可以使用的开发包

第一部 下载opencv:

opencv的下载路径为  https://opencv.org/releases/

arm opencv,opencv,arm开发,人工智能

 

这里下载3.x版本的  至于为什么用这个版本,我不得而知,因为之前用的就是3.x版本。目标我也不知道4.x版本和3.x版本之间的区别是什么。

第二步 就是下载armv8平台上的gcc和g++编译器

这里的aarch64 对应的就是avmv8的64位版本

arm opencv,opencv,arm开发,人工智能

 第三步  进入opencv源代码路径下,编译安装opencv源码

键入命令 mkdir  mybuild 新建一个文件夹 用来保存编译的文件

键入命令 mkdir  cv_sdk  用来保存编译后生成的库文件  头文件等文件

arm opencv,opencv,arm开发,人工智能

 第四步 安装cmake cmake-gui等c++编译环境  这里我已经安装完成 故不进行截图了

第五步 采用cmake-gui 搭建编译选项

arm opencv,opencv,arm开发,人工智能

点击next

 arm opencv,opencv,arm开发,人工智能

这里需要选择第一个选项 也就是aarch64开头的cmake 文件,然后点击finish 

arm opencv,opencv,arm开发,人工智能

设置这两个值 分辨是cmake_build_type 和 cmake_install_prefix 

 arm opencv,opencv,arm开发,人工智能

 选中with_gtk_2_x 去掉选中with_gtk

再次点击Configure 和 Generate 关闭cmake-gui 

第六步  键入命令sudo make -j4 && make install  

等待编译安装完成 

完成后就会得到 如下图所示的文件夹 bin是可执行文件夹 include是头文件夹  lib是库文件夹 share是cmake文件夹 

arm opencv,opencv,arm开发,人工智能

到此为止  arm版的opencv已经编译完成

接下来 我们采用cmake 和 已经编译好的 Opencv 写一个简单的图像处理程序 

这个程序有一个亮点 : 一个是将编译好的动态库文件和头文件  直接拷贝到当前文件目录下,这样的话就方便产品灵活部署,即在其他设备上 不用安装编译Opencv

下图为整个程序的架构

arm opencv,opencv,arm开发,人工智能

 

接下来看看CMakeLists.txt文件内容

arm opencv,opencv,arm开发,人工智能

cmake_minimum_required(VERSION 3.1)
project(opencv)
include_directories(/home/rock/opencv_test1/cv_sdk/include)
link_directories(/home/rock/opencv_test1/cv_sdk/lib)
add_executable(opencv opencv.cpp)
target_link_libraries(opencv /home/rock/opencv_test1/cv_sdk/lib/libopencv_highgui.so.3.4.5                            /home/rock/opencv_test1/cv_sdk/lib/libopencv_imgcodecs.so.3.4.5                             /home/rock/opencv_test1/cv_sdk/lib/libopencv_imgproc.so.3.4.5
/home/rock/opencv_test1/cv_sdk/lib/libopencv_video.so.3.4.5
/home/rock/opencv_test1/cv_sdk/lib/libopencv_core.so.3.4.5
/home/rock/opencv_test1/cv_sdk/lib/libopencv_videoio.so.3.4.5

        )

 接下来看看源文件

#include <iostream>
#include "opencv2/core/core.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"


int main()
{
    cv::VideoCapture cap;
    cv::Mat srcImage = cv::imread("1.jpg");
    cv::Mat img;
    cv::cvtColor(srcImage, img, cv::COLOR_BGR2RGB);
    //cv::imwrite("resize_input.jpg", srcImage);
    cv::imwrite("resize_input.jpg", img);
    //cv::Mat img;
    cv::cvtColor(srcImage, img, cv::COLOR_BGR2RGB);
    cv::imshow("源图像",srcImage);
    cv::waitKey(0);
    return 0;
}

在build文件夹下进行编译 

,得到可执行文件 

arm opencv,opencv,arm开发,人工智能

说明opencv的编译是成功的文章来源地址https://www.toymoban.com/news/detail-688825.html

到了这里,关于编译基于armV8架构的opencv,并在rock3a开发板上运行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 树莓派4b(armv8) 64位系统编译安装onnx

    网上大部分树莓派安装onnx的都是基于树莓派3b的,或者说基于armv7架构的。 本文记录一下如何在最新的树莓派4b系统(armv8、python3.9)上编译安装onnx的过程。 获取当前系统的内核版本号及系统名称 获取当前系统的内核版本及系统名称 可以看到我的cpu版本是armv8 如果是armv7架构

    2024年02月05日
    浏览(179)
  • 【ARM架构】ARMv8-A 系统中的安全架构概述

    一个安全或可信的操作系统保护着系统中敏感的信息,例如,可以保护用户存储的密码,信用卡等认证信息免受攻击。 安全由以下原则定义: 保密性:保护设备上的敏感信息,防止未经授权的访问。有以下几种方法可以做到,比如密码和加密密钥。 完整性:使用公钥来保护

    2024年02月21日
    浏览(45)
  • ARMv8/ARMv9架构下特权程序之间的跳转模型与系统启动探析

    ARMv8和ARMv9架构是ARM公司推出的先进处理器架构,被广泛应用于移动设备、服务器和嵌入式系统。这两个架构的设计旨在提供更高的性能、更好的能效以及更强大的安全性。其中,不同特权程序之间的跳转模型是这一架构中关键的组成部分,对于系统的整体安全性和可靠性具有

    2024年03月16日
    浏览(45)
  • 交叉编译----宿主机x86 ubuntu 64位-目标机ARMv8 aarch64

    1.交叉编译是什么,为什么要交叉编译 编译:在一个平台上生成在该平台上的可执行代码 交叉编译:在一个平台上生成在另一个平台上的可执行代码 交叉编译的例子:如51单片机的可执行代码(hex文件)是在集成环境keil上面编译完成的,我们只需要将编译好的可执行代码下

    2024年02月15日
    浏览(42)
  • 【ARM Cortex-M 系列 3 番外篇 -- ARMv6, ARMv7, ARMv8, ARMv9 架构差异及精简指令集 与 复杂指令集 介绍】

    上篇文章:ARM Cortex-M 系列 2.1 – RT-Thread Cortex-M7 异常处理及 hardfault 处理分析 ARM架构是一种处理器架构,全称为高级精简指令集计算机(Advanced RISC Machine)。它是英国ARM公司设计的一种精简指令集( RISC )处理器架构,和复杂指令集( CISC )处理器架构相对。 CISC 与 RISC 差异

    2024年02月08日
    浏览(45)
  • DP读书:鲲鹏处理器 架构与编程(七)ARMv8-A 体系结构

    大家好,我是DP,一名最近开始研究处理器与服务器的小白,以下是我在阅读 鲲鹏处理器 架构与编程 第二章 ARMv8-A体系结构 的笔记,希望能加深大家对该种架构的理解,但这是相当底层的原理,也是很多提供云原生的服务器底层架构。 2011年11月 ,ARM公司发布 首个支持64位指

    2024年02月12日
    浏览(50)
  • 带wiringPi库的交叉编译 ---宿主机x86Ubuntu,目标机ARMv8 aarch64(香橙派)

    带wiringPi库的交叉编译如何进行 先交叉编译wiringPi库,编译出的库适合香橙派,这时候交叉编译可执行程序的平台和链接库的格式也是正确的 ,然后通过-I和-L来指定链接的wiringPi库的头文件和库的位置,但是现在还没有学习过,后面学了补上 此时如果把wiringPi库拿到Ubuntu上进

    2024年02月15日
    浏览(43)
  • FreeRTOS 基于 ARMv8-M 对 MPU 的应用

    ARMv8-M 支持 MPU,FreeRTOS 也添加了对这些 MPU 的应用代码。这里用来记录 FreeRTOS 对 MPU 应用方式的探究结果。 ARMv8-M MPU 支持每个安全状态(non-secure 和 secure)0-8个区域的配置。 MPU 的主要特性如下: 区域最小大小为32字节,最大为4GB,但必须为32字节的整数倍 所有的区域必须以32字节

    2024年02月14日
    浏览(35)
  • 【ARMv8M Cortex-M33 系列 3 -- RT-Thread renesas/ra4m2-eco 移植编译篇】

    请阅读 【嵌入式开发学习必备专栏 之Cortex-M33 专栏】 本文以瑞萨的 ra4m2-eco 为例介绍如何下载rt-thread 及编译的设置。 RT-Thread 代码下载 : git clone 路径 :https://github.com/RT-Thread/rt-thread 代码下载下来后如下: 此外还需自行下载一套编译 arm gcc 编译工具,如 gcc-arm-none-eabi 。 编

    2024年02月03日
    浏览(50)
  • ARMv8 汇编指令

    MOV Xd|SP, Xn|SP MOV Xd|SP, #imm16 常用于寄存器之间的搬移和立即数搬移,   仅仅支持imm16, 0-4096大小范围的立即数操作 MRS: 状态寄存器 -- 通用寄存器的传送指令。 MSR: 通用寄存器 -- 状态寄存器的传送指令。 注意:在ARMv7里通过CP15协处理器方位系统寄存器 还可以访问PSTATE寄存器一

    2024年04月27日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包