大家好,我是痞子衡,是正经搞技术的痞子。本系列痞子衡给大家介绍的是机器视觉模块OpenMV-RT初体验

  近些年机器视觉应用一直是个很火的方向,想象一下机器如果能长上“眼睛”,是不是就可以做一些人类才能做的事情,因此机器视觉是人工智能实现的一个重要基础。痞子衡当年硕士毕业论文课题就是工业相机图像处理相关的,算是机器视觉系统的前端核心。遥想十年以前,想要从事机器视觉系统的开发一直是比较复杂的,需要开发者有相当扎实的嵌入式开发基础,而现在一些机器视觉相关研究小组为了能让开发者把更多重心放在应用本身,推出了简洁易用的机器视觉模块,借助这些模块,即使没有太多嵌入式经验,也可以轻松玩机器视觉。今天痞子衡就带大家一起体验恩智浦推出的一款轻量级的机器视觉模块OpenMV-RT:

一、模块简介

  今天痞子衡要讲的模块全称是OpenMV-RT,这是一款基于恩智浦最近主打的i.MXRT超高性能系列MCU的视觉模块。如下是模块简图,从简图里可以看出,这款板子设计得非常简洁,基本除了MCU最小系统之外,仅包含四大部件:640x480数字摄像头传感器、九轴姿态传感器、串行SPI Flash(存放代码)、SD卡槽(文件系统):

  除此以外,模块还提供了标准OpenMV接口,可在OpenMV项目(关于OpenMV项目,痞子衡会在后续文章里细聊)生态里任意扩展其他功能模块:

Note: 更详细的模块介绍可见该模块设计者Rocky Song发表的微信文章 《基于i.MX RT1060的可编程视觉模块》

二、安装模块

2.1 购买模块和SD卡

  首先你需要有一块OpenMV-RT模块,不带SD卡的裸价是399元,镜头焦距有6种可选。此模块为第14届全国大学生智能车竞赛参赛选手提供过50元专享抵扣。

2.2 下载i.MXRT固件

  拿到OpenMV-RT模块后,为了保证模块能够正常运行,最好试着自己下载一次i.MXRT固件程序(防止厂商发货忘记烧录固件),固件程序工程放在github网站上,源代码是开源的。

  如果你不熟悉Git,那就按下图所示直接下载项目压缩包(记得Step1一定要做)。如果你熟悉Git,那就直接clone项目,并且checkout到omv_initial_integrate分支。

  痞子衡在第一节模块简图展示过模块有一个6-Pin的SWD接口,这个接口便是用于连接J-Link仿真器去下载i.MXRT固件程序进外部串行SPI Flash的。可按下图连接模块与J-Link仿真器:

  • J-Link.Pin6 (GND) -> 模块J1.6(GND)
  • J-Link.Pin1 (VCC) -> 模块J1.5(3.3V)
  • J-Link.Pin7 (SWC) -> 模块J1.3(SWC)
  • J-Link.Pin9 (SWD) -> 模块J1.2(SWD)

  使用Keil MDK(需v5.20以上)打开固件工程,选中“debug_flexspi” 然后编译该工程(约4分钟),最后点击下载(约2分钟),固件下载完成后需要给模块重新上电。

  • i.MXRT固件工程:\micropython-rocky\ports\prj_keil_rt1060\mpyrt1060.uvproj

2.3 安装OpenMV IDE

  因为OpenMV-RT模块实现了OpenMV IDE的调试监控协议。为了体验无需存盘一键下载并且监视模块帧缓冲的功能,以及启用虚拟串口功能,模块最好配合OpenMV IDE一起使用。

三、运行模块

  关于OpenMV-RT模块的运行,痞子衡将给大家演示一个基于CIFAR-10数据集的物体识别的应用。

3.1 插上SD卡(含CIFAR-10模型文件)

  OpenMV-RT模块需要配合SD卡一起使用,模块当前仅支持在SD上实现文件系统。痞子衡要演示的物体识别的应用预训练CIFAR-10数据集模型文件需要存放在SD卡里,模型文件包含两个文件:cifar10.network和cifar10_fast.network。

  • 预训练CIFAR-10数据集模型文件路径:\micropython-rocky\examples\rocky_test\multi_demos_extract_to_tfcard\

3.2 使用IDE连接模块

  先打开OpenMV IDE,然后给OpenMV-RT模块上电(如果是第一次连接),系统可能花较长时间(可能超过1分钟)来安装和配置驱动,请耐心等待。当OpenMV IDE左下角状态发生如下变化时,即表明驱动安装成功,并已识别出模块。

3.3 运行物体识别应用

  使用OpenMV IDE打开物体识别应用的Python源程序(是的,OpenMV-RT支持MicroPython语言,关于其原理痞子衡会在后续文章细聊),这个源程序其实包含了2个应用,一个是基于CIFAR-10的物体识别,另一个是基于LENet的数字识别。痞子衡想要演示的是物体识别,因此需要将Python源代码稍作如下修改:

  • 物体识别应用主程序:\micropython-rocky\examples\rocky_test\multi_demos_extract_to_tfcard\main.py
#...省略

while (True):
pyb.LED(1).off()
pyb.LED(2).off()
pyb.LED(3).on()
pyb.LED(4).off() #If you use RT1052, 'isFull' should be False
CIFAR10Test(40000000, isFull = True)
# RT1052 does not have enough RAM to run this
#LENetTest(40000000)

  程序修改完毕后,点击IDE左下角运行按钮,OpenMV-RT模块便开始运行Python程序,你可以在IDE里看到摄像头实时采集窗口。去网上随便找一张CIFAR-10训练的10种物体(飞机、汽车、鸟、猫、鹿、狗、蛙、马、船、卡车)的图片,痞子衡找了一张鹿的图片,并放在摄像头面前,可以看到采集窗口最上面显示了识别结果“deer”。

  至此,OpenMV-RT模块初体验痞子衡便介绍完毕了,掌声在哪里~~~

欢迎订阅

文章会同时发布到我的 博客园主页CSDN主页微信公众号 平台上。

微信搜索"痞子衡嵌入式"或者扫描下面二维码,就可以在手机上第一时间看了哦。

痞子衡嵌入式:恩智浦机器视觉模块OpenMV-RT那些事(1)- 初体验的更多相关文章

  1. 痞子衡嵌入式:如果i.MX RT是一匹悍马,征服它时别忘了用马镫MCUBootUtility

    -- 跨界之风吹满地,先锋当属NXP; 微控制器谁独骚?当仁不让看RT! 恩智浦半导体2017年10月正式发布了业内首款跨界处理器-i.MX RT系列,这是MCU界的汗血宝马,更是一匹桀骜不驯的悍马. ...

  2. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(8)- 从Raw NAND启动

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Raw NAND启动. 前面铺垫了七篇启动系列文章,终于该讲具体Boot Device了,我们知道i. ...

  3. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(9)- 从Parallel NOR启动

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Parallel NOR启动. 上一篇讲i.MXRT从Raw NAND启动的文章 从Raw NAND启 ...

  4. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(13)- 从Serial(1-bit SPI) EEPROM/NOR恢复启动

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Serial EEPROM/NOR恢复启动. 在前几篇里痞子衡介绍的Boot Device都属于主动启 ...

  5. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(11.0)- FlexSPI NOR启动时间(RT1170)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RT1170 FlexSPI NOR启动时间. 痞子衡刚刚拿到i.MXRT1170 B0版本的芯片,迫不及待地在上面跑了 ...

  6. 痞子衡嵌入式:恩智浦i.MX RTxxx系列MCU特性那些事(1)- 概览

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是恩智浦i.MX RTxxx系列MCU的基本特性. 恩智浦半导体于2017年开始推出的i.MX RT系列重新定义了MCU,其第一款芯片i. ...

  7. 痞子衡嵌入式:恩智浦MCU安全加密启动一站式工具NXP-MCUBootUtility用户指南

    NXP MCU Boot Utility English | 中文 1 软件概览 1.1 介绍 NXP-MCUBootUtility是一个专为NXP MCU安全加密启动而设计的工具,其特性与NXP M ...

  8. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(3)- Serial Downloader模式(sdphost/MfgTool)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的Serial Downloader模式. 在上一篇文章 Boot配置(BOOT Pin, eFUSE) ...

  9. 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU启动那些事(5)- 再聊eFUSE及其烧写方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的eFUSE. 在i.MXRT启动系列第二篇文章 Boot配置(BOOT Pin, eFUSE) 里痞子 ...

随机推荐

  1. The command ("dfs.browser.action.delete") is undefined 解决Hadoop Eclipse插件报错

    Hadoop Eclipse插件 报错. 使用 hadoop-eclipse-kepler-plugin-2.2.0.jar 如下所示 Error Log 强迫症看了 受不了 The command ...

  2. Udp 异步通信(三)

    转自:https://blog.csdn.net/zhujunxxxxx/article/details/44258719 1)服务端 using System; using System.Colle ...

  3. Java IO编程——字符流与字节流

    在java.io包里面File类是唯一 一个与文件本身有关的程序处理类,但是File只能够操作文件本身而不能够操作文件的内容,或者说在实际的开发之中IO操作的核心意义在于:输入与输出操作.而对于程序而 ...

  4. C#开发命令执行驱动程序 之 读入命令行参数

    /// <summary> /// 在cmd窗体内执行如下: /// OrderDriverApp.exe Order Driver App /// 返回: /// The args ar ...

  5. 怎么用Vuecli 3.0快速创建项目

    一.安装 1.安装node.js,这里需要注意的是,Vue CLI 3需要 nodeJs ≥ 8.9,所以我们去中文官方下载地址:http://nodejs.cn/download/,下载最新版本即可 ...

  6. vue之页面缓存问题(基于2.0)

    为什么会有这篇文章 在vue2.0中出现了列表页面是每次都重新加载数据,但是详情页面却只在第一次加载的时候调用数据,如果返回到列表再进入详情那么页面是不会重新渲染页面. 1 用vue-router 重 ...

  7. NOIP模拟 16

    嗯我已经是个不折不扣的大辣鸡了 上次的T3就弃了,这次又弃 颓废到天际 T1 巨贪贪心算法 我就是一个只会背板子的大辣鸡 全裸的贪心看不出来,只会打板子 打板子,加特判,然后一无进展,原题不会,这就是 ...

  8. P3052 [USACO12MAR]摩天大楼里的奶牛(迭代加深搜索)

    (已经一句话了) 第一反应:暴力 第二反应:朴素算法过不去 第三反应:没法折半暴搜(没法统计答案) 所以,歪歪了一个类似贪心刷表的方法,过了这道题. 首先,如果爆搜的话会有几个状态: 当前牛 当前几个 ...

  9. 关于Jvm的见解(二)

    栈管运行,堆管存储!!! 栈呢,也叫作栈内存,主要管java程序的运行,在线程创建时创建,生命周期和线程一致,只要线程一结束,该栈就被GC,是线程私有的.基本类型的变量和对象的引用数据类型的变量都在栈 ...

  10. 打包上传被拒 Guideline 2.5.1 - Performance - Software Requirements

    打包上传被拒 Guideline 2.5.1 - Performance - Software Requirements 在项目中全部搜索:prefs:root 找到后,把这个私有的 NSURL *u ...