请选择 进入手机版 | 继续访问电脑版
查看: 831|回复: 4

这个秋天,OpenCV和MCU更配哟

[复制链接]
  • TA的每日心情
    开心
    3 天前
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3297

    主题

    6542

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    31909
    最后登录
    2024-3-29
    发表于 2022-11-14 14:07:38 | 显示全部楼层 |阅读模式
    这个秋天,OpenCV和MCU更配哟

    本文是一个小系列的第一篇,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源码进行配置的具体方法。

    今日份的先跑篇就先到这儿,让我们下期见。


    签到签到
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    4 小时前
  • 签到天数: 1185 天

    [LV.10]以坛为家III

    22

    主题

    4647

    帖子

    0

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    7911

    活跃会员

    最后登录
    2024-3-29
    发表于 2022-11-14 15:39:48 | 显示全部楼层
    学习一下,跟着跑一遍,希望能成为管理员一样的大神
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    3 小时前
  • 签到天数: 1254 天

    [LV.10]以坛为家III

    21

    主题

    1万

    帖子

    1

    金牌会员

    Rank: 6Rank: 6

    积分
    13084
    最后登录
    2024-3-29
    发表于 2022-11-14 21:13:28 | 显示全部楼层
    这个系列的文章是不是写在了MCX N系列推出之前?现在的N系列和open CV更配哦
    跟着日天混 ,三天饱九顿!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    6 天前
  • 签到天数: 1334 天

    [LV.10]以坛为家III

    88

    主题

    4290

    帖子

    12

    版主

    Rank: 7Rank: 7Rank: 7

    积分
    9022
    最后登录
    2024-3-29
    发表于 2022-11-15 13:53:53 | 显示全部楼层
    OpenCV 跑在MCU上面,这个标题挺吸引人的。可行性又如何?
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    4 小时前
  • 签到天数: 654 天

    [LV.9]以坛为家II

    10

    主题

    2954

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    3511
    最后登录
    2024-3-29
    发表于 2022-12-14 08:14:59 | 显示全部楼层
    标记下,抽空学习OpenCV开发。谢谢管理员的分享。
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-3-29 13:26 , Processed in 0.125206 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表