基于imx6ull开发板 移植opencv4.7.0

一、概述

本章节是针对opencv-4.7.0移植到Linux系统,运行在正点原子-I.MX6U ALPHA开发板
上,详细的移植流程如下。

二、环境要求

2.1 硬件环境

  • 正点原子-I.MX6U ALPHA开发板
  • 虚拟机:VMware

2.2 软件环境

  • Ubuntu系统要求:20.04
  • opencv版本: 4.7.0
  • opencv贡献软件版本:4.x
  • 交叉工具链版本:gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf

三、移植流程

imx6ull平台交叉编译器环境:gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf,交叉编译器环境路径是/tools/ToolsChain/nxp/imx6ull/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf,交叉编译器前缀是arm-linux-gnueabihf-。
opencv-4.7.0和opencv_contrib-4.x在同一级目录,如下图所示:
在这里插入图片描述

3.1 编写平台需要的文件

进入opencv-4.7.0目录下,执行mkdir build命令创建build目录,创建并编写toolchain-linux-imx6ull.cmake文件,如下图所示:

在这里插入图片描述
在这里插入图片描述
图片内容如下:

SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR arm)SET(TOOLCHAIN_DIR "/tools/ToolsChain/nxp/imx6ull/gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf")
SET(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_DIR})
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)SET(CMAKE_C_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-g++)
SET(CMAKE_NM ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-gcc-nm)
SET(CMAKE_RANLIB ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-gcc-ranlib)
SET(CMAKE_AR ${TOOLCHAIN_DIR}/bin/arm-linux-gnueabihf-ar CACHE FILEPATH "Archiver")

保存并退出

3.2 编译并安装

在build目录下执行mkdir -p ../build_tmp/build_imx6ull目录,并进入build_imx6ull目录下,如下图所示:
在这里插入图片描述
这样创建的好处便于扩展
在build_imx6ull目录下执行内容如下:

cmake -DCMAKE_BUILD_TYPE=RELEASE  \-DCMAKE_INSTALL_PREFIX=/data/Workspace_Linux/software_lib/opencv-x.x.x/output/opencv-4.7.0/imx6ull \-DCMAKE_TOOLCHAIN_FILE=/data/Workspace_Linux/software_lib/opencv-x.x.x/opencv-4.7.0/build/toolchain-linux-imx6ull.cmake \-DBUILD_SHARED_LIBS=ON \-DCMAKE_CXX_FLAGS=-fPIC \-DCMAKE_C_FLAGS=-fPIC \-DCMAKE_EXE_LINKER_FLAGS=-lpthread -ldl \-DWITH_JPEG=ON \-DWITH_OPENCL=ON \-DWITH_PNG=ON \-DOPENCV_EXTRA_MODULES_PATH=/data/Workspace_Linux/software_lib/opencv-x.x.x/opencv_contrib-4.x/modules ../..

其中,

  • -DCMAKE_INSTALL_PREFIX:安装目录;
  • -DCMAKE_TOOLCHAIN_FILE:工具链配置目录;
  • -DOPENCV_EXTRA_MODULES_PATH:opencv4.7.0的贡献软件目录,与opencv4.7.0同级。

执行结果如下图所示:
执行
在这里插入图片描述
之后执行make -j8命令进行编译,如下图所示;

在这里插入图片描述

在这里插入图片描述
之后执行make install命令进行安装,如下图所示:

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

3.3 编译结果

安装的目录相对于build_imx6ull目录位置ls ../../../output/opencv-4.7.0/imx6ull/,如下图所示:

在这里插入图片描述

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

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

相关文章

DIVE INTO DEEP LEARNING 50-55

文章目录 50. semantic segmentation50.1 Basic concepts50.2 Major application 51. Transposed convolution51.1 Basic concepts51.2 Major role51.3 Implementation steps and application areas51.4 Transposed convolution51.5 Transposed convolution is a type of convo…

谁说串口通信波特率越高越好?

在电子世界里,串口通信就像是电子设备之间的“悄悄话”,它们通过串行数据传输来交换信息。但你知道吗?串口通信的波特率并不是越高越好,这事儿得好好聊聊。 1.什么是串口通信? 串口通信,就像它的名字一样&a…

【Python】处理 scikit-learn 中的 FutureWarning

那年夏天我和你躲在 这一大片宁静的海 直到后来我们都还在 对这个世界充满期待 今年冬天你已经不在 我的心空出了一块 很高兴遇见你 让我终究明白 回忆比真实精彩 🎵 王心凌《那年夏天宁静的海》 在数据科学和机器学习领域,scikit-…

代码随想录训练营Day37

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、动态规划基础理论 前言 今天是跟着代码随想录刷题的第37天,主要学习了动态规划的理论知识。 一、动态规划基础理论 动规基础 背包问题 打家劫…

代码随想录训练营Day39

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、不同路径二、不同路径2 前言 今天是跟着代码随想录刷题的第39天,主要是学习了不同路径和不同路径2的问题 一、不同路径 思路: 动态…

深度学习11-13

1.神经元的个数对结果的影响: (http://cs.stanford.edu/people/karpathy/convnetjs/demo/classify2d.html) (1)神经元3个的时候 (2)神经元是10个的时候 神经元个数越多,可能会产生…

计算机组成原理 —— 存储系统(DRAM和SRAM,ROM)

计算机组成原理 —— 存储系统(DRAM和SRAM) DRAM和SRAMDRAM的刷新DRAM地址复用ROM(Read-Only Memory(只读存储器)) 我们今天来看DRAM和SRAM: DRAM和SRAM DRAM(动态随机存取存储器&…

展示3D模型的网站哪个好?

如果仅仅是模型展示,目前国内外值得推荐的无非就是那么几个,它们各自有不同的特点和优势: 1、Sketchfab:Sketchfab是一个知名的3D模型展示平台,提供了海量的模型资源和出色的3D展示效果。用户无需安装任何插件即可在线…

Spring Cloud - nacos +ubuntu环境搭建

1、安装ubuntu虚拟环境 VMware虚拟机安装Ubuntu与配置Ubuntu(超详细教程) 2、docker环境安装 1、apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common 2、curl -fsSL https://mirrors.ustc.edu.cn/docke…

Maven的依赖传递、依赖管理、依赖作用域

在Maven项目中通常会引入大量依赖,但依赖管理不当,会造成版本混乱冲突或者目标包臃肿。因此,我们以SpringBoot为例,从三方面探索依赖的使用规则。 1、 依赖传递 依赖是会传递的,依赖的依赖也会连带引入。例如在项目中…

自动驾驶仿真测试用例表格示例 ACC ELK FCW

自动驾驶仿真测试用例表格示例 测试用例概览 本测试用例表格涵盖了自动驾驶系统中多个关键功能和场景的测试,旨在确保系统在不同条件下的表现和稳定性。 用例编号测试项目测试描述预期结果实际结果通过/失败TC-001ACC功能测试在高速公路上启用ACC,测试车…

JSON介绍

一、JSON的介绍 JOSN,中文名,JS对象表示法,JSON就是一种特殊的字符串 是一种轻量级的数据交换格式,客户端和服务器端的交互,基本都是JSON格式。 JSON格式 { “name”: "Tom", "age" …

SCI一区级 | Matlab实现BO-Transformer-LSTM多变量时间序列预测

SCI一区级 | Matlab实现BO-Transformer-LSTM多变量时间序列预测 目录 SCI一区级 | Matlab实现BO-Transformer-LSTM多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.【SCI一区级】Matlab实现BO-Transformer-LSTM多变量时间序列预测,贝叶斯…

力扣SQL50 超过5名学生的课

Problem: 596. 超过5名学生的课 Code select class from courses group by class having count(distinct student) > 5;

Java中常见的设计模式及应用场景

Java中常见的设计模式及应用场景 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨Java中常见的设计模式及其应用场景,帮助大家更好地理…

Java中如何处理日期和时间?

Java中如何处理日期和时间? 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨如何在Java中处理日期和时间,这是开发中非常常…

数组元素去重

1 .旧数组不重复的元素放到新数组 2 .遍历旧数组,拿旧数组查新数组,如果元素在新数组内没有出现过就添加 3 .利用 新数组.indexOf(数组元素) 如果返回-1就说明新数组里没有该元素 //封装一个 去重的函数 function unique(arr) {var newArr[];for(var …

高通安卓12-固件升级

下载步骤 第一步 格式化 「下载一次即可;能开机能下载的板子 忽略这一步,直接执行第二步即可」 QFIL工具配置为UFS类型,勾选Provision,如下图: Programmer选择prog_firehose_ddr.elf,Provision Xml选择prov…

Springboot项目jar加密

部署的程序进行加密,防止第三方非法拷贝走项目进行二次开发或部署。我们知道java代码编译后生成的以.class结尾的字节码文件或者.jar/.war结尾的可执行文件都是可以反编译生成.java文件的,虽然反编译后生成的.java文件和原本的.java文件有些微差别&#…

【STM32-新建工程-CubeMX】

STM32-新建工程-CubeMX ■ CubeMX 生产工程 ■ CubeMX 生产工程