0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MCU如何部署OpenCV

恩智浦MCU加油站 ? 来源:恩智浦MCU加油站 ? 作者:恩智浦MCU加油站 ? 2022-11-03 09:12 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本文是一个小系列的第一篇,MCU部署OpenCV的“先跑篇”,稍后会陆续有“配置篇”、“实战篇”、“进阶篇”、“优化篇”,带您牵手OpenCV,进入OpenCV的广阔世界。

说到OpenCV,想必不用小编再多说什么了吧,可谓是计算机视觉处理届的扛把子选手。

对她仰慕已久

但凡是接触过/亲手把玩过数字图像的朋友们,都或多或少的接受过OpenCV的辅佐吧。小到:图像数据的打开/保存、摄像头数据的读取,大到目标识别,神经网络等,可以说,OpenCV就像是一个无所不能的存在。想做图像开发吗?come on,OpenCV准能大手一挥,委派手下将领来辅佐我们打下江山。

看到这里,相信大家已经从字里行间感受到了,小编这无处安放的、快要溢出纸面的、满满的膜拜和敬仰之情了吧。没错,小编也正是OpenCV的受益者,当你还在为如何打开一张粉丝发过来的彩图而一筹莫展之时,OpenCV就会在远方呼唤:试试imread?图片太小,看不清偶像的签名?试试resize?是的,无所不能的OpenCV就是能随时满足我们的任何开发需求,或者说的稍显专业范一点:知道《数字图像处理-冈萨雷斯》吗?相信我,OpenCV里都有。

写到这儿,小编真想直接一个一键三连。

配得上她吗?

就不再过多的感慨了,让我们开始下一部分,说说今天的主题。

相信大家也有注意到,即便OpenCV在PC端混的风生水起,可是在我们的嵌入式平台上,这里特指MCU平台(同为嵌入式平台,隔壁MPU仗着DDR+强力A核已经成功上船),可以说是障碍重重。

首先第一个遇到的障碍是代码空间,尽管OpenCV的功能强大,其代码量也让人心头一惊。低头翻翻芯片手册,看到那捉襟见肘的存储容量,基本可以直接放弃跑OpenCV的想法了。

第二个大障碍则是算力,与PC机主频上GHz的多核处理器相比,MCU的处理能力确实堪忧。

但是,自从出现了i.MX RT系列的MCU,让人们看到了在嵌入式MCU的应用环境中,借助OpenCV进行图像开发的希望。

i.MX RT具有600MHz以上的主频,让运行OpenCV成为可能。而其对外部存储扩展的支持,正好能够解决代码空间的问题。i.MX RT系列为部署OpenCV提供了一个新的突破口。

还有第三大障碍,在MCU平台上跑OpenCV没有先例可循,想玩但感觉无从下手。

那么,下面小编就来引领大家开始OpenCV的另一种玩儿法,在MCU平台上进行部署,所选用的平台是拥有高达1GHz主频的,我们的i.MX RT1170系列MCU,她拥有最大2MB的内部RAM,和外扩的QSPI Flash用于代码存储,以及外扩的SDRAM用于庞大的数据存储。

好好地端详

开始把玩之前,先来正式介绍一下这次的主角,大名鼎鼎的OpenCV项目。

OpenCV(开源计算机视觉库:http://OpenCV.org)是一个包含数百种计算机视觉算法的开源库。没错, OpenCV是开源的,不收费哟,太良心。

OpenCV具有模块化结构,这意味着其包括多个共享或静态库。例如:核心功能、图像处理、视频分析、相机校准和3D重建(calib3d)、2D功能框架(features2D)、对象检测(objdetect)、高级GUI(highgui)、视频I/O(Video)。可以说,涵盖了几乎所有的数字图像处理领域。

牵手前的准备

认识了我们的主角,下面我们来看看移植上可能会遇到的问题,当然上文所述,算力和代码大小的问题也要考虑到:

编译方式/最终呈现方式:这个主要是涉及到我们最终如何使用OpenCV代码,是源码嵌入还是用静态链接库的形式。
小编这里直接选择编译成静态链接库,这样就不用每次都集成源码到工程中,更加方便。
不过,有一个问题要注意,因为OpenCV代码主体是C++编写的,受编译器版本影响,可能会导致编译出来的静态链接库并不兼容当前工程。
因此,要注意,编译器的版本要保证一致,切记!!

编译工具链:在PC上,一般是选用GCC / visual studio(分别对应linux和windows平台)进行代码编译,到了嵌入式平台,要注意使用对应的嵌入式开发工具链,小编这里推荐arm-none-eabi-gcc以及ARMCland(Keil)。
可能有朋友要问了啊,IAR呢?别问,问就是小编用Keil比较熟悉,手动捂脸。。。。

头文件和数据类型问题:不同的工具链的头文件组织/构成方式不同,换句话说,有些头文件,GCC有而ARMCLang可能没有,需要特殊考虑。
而数据类型问题主要体现在不同编译器,对于使用typedef重定义的整数类型的解释方式。

代码大小和算力:这里小编没有进行特殊的代码级优化,完完全全的放手让编译器帮我们去做了,例如使用GCC的-o3,ARMCLand的-oszie / -ofast等

操作系统支持:因为OpenCV的一些代码是要依赖于OS的,例如多进程 / 进程通信等,而我们的MCU平台尽管也支持OS。
但是一般都是多线程OS,不太能满足OpenCV的要求。当然,除了多进程这一点,我们的MCU平台还是可以胜任的。
针对这一点,就没啥可说的了,简单粗暴一点:直接disable掉这些模块。

配置工具适配:因为我们这里不使用VS进行代码管理,而OpenCV可以基于CMake进行工程管理并借助Make进行代码编译。
那么针对不同的开发端OS,Linux / Windows,需要安装对应版本的CMake + Make工具。

憧憬与遐想

随着人工智能技术的普及,人们期待在MCU平台上能进行更加复杂的图像处理,成熟的OpenCV自然而然地引起了我们的高度关注。

但是由于前面提到的那些障碍以及对操作系统的依赖,在MCU上跑OpenCV能够做到什么程度,还是需要不断地挖掘和探索。

从我们目前工作的情况看,可以说一些基础的图像操作:resize、rotate、边缘提取以及基本的滤波算法等,完全没问题。小编也将在后面的系列中为大家一一揭密。

当然,OpenCV+MCU仍然是一个全新的领地,具体能做到什么,还要大家发挥想象力,让OpenCV能够在MCU平台上开出绚烂的花朵!

限于篇幅,本期小编就和大家聊到这儿,下期将为大家详细介绍如何进行工具链的安装,以及如何对OpenCV源码进行配置的具体方法。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    18075

    浏览量

    370983
  • 计算机视觉
    +关注

    关注

    9

    文章

    1711

    浏览量

    46958
  • OpenCV
    +关注

    关注

    32

    文章

    648

    浏览量

    43275

原文标题:这个秋天,OpenCV和MCU更配哟

文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    零成本钢铁侠手套!树莓派+OpenCV 秒变手势遥控器!

    大家好,这是一个树莓派和OpenCV的连载专题。使用树莓派与OpenCV实现姿态估计和面部特征点追踪使用树莓派与OpenCV实现面部和运动追踪的云台系统使用树莓派和OpenCV实现手部
    的头像 发表于 08-16 16:16 ?90次阅读
    零成本钢铁侠手套!树莓派+<b class='flag-5'>OpenCV</b> 秒变手势遥控器!

    如何使用树莓派与OpenCV实现面部和运动追踪的云台系统?

    大家好,这是一个树莓派和OpenCV的连载专题。使用树莓派与OpenCV实现姿态估计和面部特征点追踪使用树莓派与OpenCV实现面部和运动追踪的云台系统使用树莓派和OpenCV实现手部
    的头像 发表于 08-14 17:45 ?194次阅读
    如何使用树莓派与<b class='flag-5'>OpenCV</b>实现面部和运动追踪的云台系统?

    如何使用树莓派+OpenCV实现姿态估计和面部特征点追踪?

    大家好,这是一个树莓派和OpenCV的连载专题。使用树莓派与OpenCV实现姿态估计和面部特征点追踪使用树莓派与OpenCV实现面部和运动追踪的云台系统使用树莓派和OpenCV实现手部
    的头像 发表于 08-13 17:44 ?228次阅读
    如何使用树莓派+<b class='flag-5'>OpenCV</b>实现姿态估计和面部特征点追踪?

    如何板端编译OpenCV并搭建应用--基于瑞芯微米尔RK3576开发板

    本文将介绍基于米尔电子MYD-LR3576开发板(米尔基于瑞芯微 RK3576开发板)的板端编译OpenCV及环境搭建方案的开发测试。摘自优秀创作者-短笛君 RK3576具有如下配置: 4
    发表于 08-08 17:14

    【Milk-V Duo S 开发板免费体验】SDK编译、人脸检测、OpenCV测试

    【Milk-V Duo S 开发板免费体验】SDK编译、人脸检测、OpenCV测试 本文介绍了 Milk-V Duo S 开发板实现 Buildroot SDK 镜像编译、基于 TDL 模型的人
    发表于 07-11 13:48

    #工作原理大揭秘 #单片机 #电路原理 #MCU#mcu程序开发

    mcu
    宇凡微电子
    发布于 :2025年06月19日 19:02:28

    如何在k230上运行OpenCV的代码?

    如何在k230上运行OpenCV的代码
    发表于 06-17 06:06

    快速部署!米尔全志T527开发板的OpenCV行人检测方案指南

    本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志T527开发板)的OpenCV行人检测方案测试。摘自优秀创作者-小火苗 一、软件环境安装1.在全志T527开发板安装OpenCV
    发表于 04-11 18:14

    为LSDK构建opencv时遇到的问题求解

    我正在尝试使用 flex-builder 来运行 bld -c opencv -r ubuntu:桌面 我想要最新版本的 OpenCV。在我的 sdk.yml 文件中,我将 opencv
    发表于 03-26 08:26

    使用OpenCV保存从摄像头捕获的视频时更改颜色输出视频收到警告怎么解决?

    保存了从配备 OpenCV* 的摄像头捕获的视频。 生成更改的颜色输出视频。 收到警告:[ INFO:0] global .。/opencv/modules/core/src/utils
    发表于 03-05 07:20

    AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV

    1 简介 Opencv(Open Source Computer Vision Library)是一个基于开源发行的跨平台计算机视觉库,它实现了图像处理和计算机视觉方面的很多通用算法,已成为计算机
    发表于 12-14 09:31

    AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV

    1简介Opencv(OpenSourceComputerVisionLibrary)是一个基于开源发行的跨平台计算机视觉库,它实现了图像处理和计算机视觉方面的很多通用算法,已成为计算机视觉领域最有
    的头像 发表于 12-14 09:10 ?971次阅读
    AI模型<b class='flag-5'>部署</b>边缘设备的奇妙之旅:如何在边缘端<b class='flag-5'>部署</b><b class='flag-5'>OpenCV</b>

    RK3568 + OpenCV 会碰撞出什么火花?案例详解:2-1 基于OpenCV的画线实验

    一、实验目的 本节视频的目的是了解OpenCV的作用并通过OpenCV实现画线。 二、实验原理 OpenCV 开放源代码计算机视觉库 OpenCV(Open source Comput
    发表于 12-03 14:09

    国产MCU扎堆平替STM32的原因

    mcu
    芯广场
    发布于 :2024年11月11日 17:00:28

    【龙芯2K0300蜂鸟板试用】5 搭建opencv开发环境

    在官方提供的buildroot根文件系统中,不支持opencv库,故需要自己增加,另外,在本地编译的时候,需要在本地(ubuntu)上安装对应opencv库,这样才能将编译好的镜像放到板子上跑起来
    发表于 08-27 15:08