《DNK210使用指南 -CanMV版 V1.0》第三章 CanMV简介
第三章 CanMV简介
1)实验平台:正点原子DNK210开发板
2) 章节摘自【正点原子】DNK210使用指南 - CanMV版 V1.0
3)购买链接:https://detail.tmall.com/item.htm?&id=782801398750
4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html
5)正点原子官方B站:https://space.bilibili.com/394620890
6)正点原子K210技术交流企鹅群:605557868
本章将对CanMV进行简单介绍
本章分为如下几个小节:
3.1 初识CanMV
3.2 CanMV的应用开发方式
3.1 初识CanMV
CanMV是嘉楠科技针对AIOT编程的独立开源项目,其源代码在GitHub上开源(https://github.com/kendryte/canmv.git),可在例如Kendryte K210等强大的嵌入式AI SoC上运行,CanMV提供了基于MicroPython语法的应用开发方式,但同时也支持使用基于C语言和FreeRTOS的应用开发方式。
3.2 CanMV的应用开发方式
CanMV提供了基于C语言和FreeRTOS的应用开发方式和基于MicroPython语法的应用开发方式。
当使用CanMV提供的基于C语言和FreeRTOS的方式进行应用开发时,开发过程使用C或C++语言进行开发,与使用裸机SDK的裸机开发方式一样,这种开发方式要求开发者了解目标芯片的各种参数信息和特性,但相较于使用裸机SDK的裸机开发方式,CanMV提供了移植好的FreeRTOS操作系统,以便开发者能够完成更加复杂多任务应用的开发。
虽然使用C语言的裸机或操作系统的开发方式往往能使应用具有较高的运行效率和性能,但需涉及目标芯片底层寄存器的配置并同时对开发者的嵌入式开发能力有一定要求,但如果是为了初步了解目标芯片的功能、快速地进行一些功能验证或是完成一些相对简单的功能开发,那CanMV提供的基于MicroPython语法的开发方式就是再合适不过的选择了。使用CanMV提供的基于MicroPython语法的应用开发方式,开发者可以快速且便捷地完成应用开发,以下是两个基于MicroPython语法的简单应用示例:
寻找I2C设备示例:
from machine import I2C
i2c = I2C(I2C.I2C0, freq=100000, scl=28, sda=29)
devices = i2c.scan()
print(devices)
拍照示例:
import sensor
import image
import lcd
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
while True:
img = sensor.snapshot()
lcd.display(img)
AI人脸检测示例:
import sensor
import image
import lcd
from maix import KPU
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
anchor = (
0.1075, 0.126875, 0.126875, 0.175, 0.1465625, 0.2246875,
0.1953125, 0.25375, 0.2440625, 0.351875, 0.341875, 0.4721875,
0.5078125, 0.6696875, 0.8984375, 1.099687, 2.129062, 2.425937
)
face_detecter = KPU()
face_detecter.load_kmodel('/sd/face_detect_320x240.kmodel')
face_detecter.init_yolo2(
anchor, anchor_num=9,
img_w=320, img_h=240,
net_w=320, net_h=240,
layer_w=10, layer_h=8,
threshold=0.5, nms_value=0.2, classes=1
)
while True:
img = sensor.snapshot()
face_detecter.run_with_output(img)
faces = face_detecter.regionlayer_yolo2()
for face in faces:
img.draw_rectangle(face[0], face[1], face[2], face[3], color=(0, 255, 0))
可以看到,使用CanMV提供的基于MicroPython语法的开发方式,仅需少量的几行代码便可实现一些简单的功能。
CanMV的源码本质上是一套基于C的软件开发框架,CanMV可谓是站在巨人的肩膀上实现的一套软件框架,为什么这么说呢?这是因为CanMV集成了许多现成的软件库,例如裸机SDK、FreeRTOS、MicroPython、OpenMV的图像处理库等一系列软件库,其中裸机SDK提供了CanMV驱动Kendryte K210底层硬件的能力,FreeRTOS为CanMV实现多核多任务的任务调度以及移植MicroPython成为可能,MicroPython让CanMV的应用可以以类似Python脚本的方式进行开发,OpenMV的图像处理库让CanMV的应用程序可以快速地对图像进行各种包括但不限于元素绘制、图像滤波、特征检测、色块追踪、图像对比和码识别的处理。
《DNK210使用指南 -CanMV版 V1.0》第三章 CanMV简介的更多相关文章
- MySQL与MariaDB核心特性比较详细版v1.0(覆盖mysql 8.0/mariadb 10.3,包括优化、功能及维护)
注:本文严禁任何形式的转载,原文使用word编写,为了大家阅读方便,提供pdf版下载. MySQL与MariaDB主要特性比较详细版v1.0(不含HA).pdf 链接:https://pan.baid ...
- J20航模遥控器开源项目系列教程(一)制作教程 | 基础版V1.0发布,从0到1
我们的开源宗旨:自由 协调 开放 合作 共享 拥抱开源,丰富国内开源生态,开展多人运动,欢迎加入我们哈~ 和一群志同道合的人,做自己所热爱的事! 项目开源地址:https://github.com/C ...
- [原创] RestartPC64-中文版v1.0.0.9
原来发布的RestartPC-中文版和英文版v1.0.0.5,在PE64下无效.所以重新编译了64位版的RestartPC64-中文版v1.0.0.9,可以在PE64下面.正常Win64系统下面重启关 ...
- Python黑帽编程3.0 第三章 网络接口层攻击基础知识
3.0 第三章 网络接口层攻击基础知识 首先还是要提醒各位同学,在学习本章之前,请认真的学习TCP/IP体系结构的相关知识,本系列教程在这方面只会浅尝辄止. 本节简单概述下OSI七层模型和TCP/IP ...
- 《C++Primer》第五版习题答案--第三章【学习笔记】
[C++Primer]第五版[学习笔记]习题解答第三章 ps:答案是个人在学习过程中书写,可能存在错漏之处,仅作参考. 作者:cosefy Date: 2020/1/10 第三章:字符串,向量和数组 ...
- Windows程序设计(第五版)学习:第三章 窗口与消息
第三章 窗口与消息 1,windows窗口过程:应用程序所创建的每一个窗口都有一个与之关联的窗口过程,用于处理传递给窗口的消息. 2,窗口依据窗口类来创建.窗口类标识了用于处理传递给窗口的消息 ...
- WPF 自定义 MessageBox (相对完善版 v1.0.0.6)
基于WPF的自定义 MessageBox. 众所周知WPF界面美观.大多数WPF元素都可以简单的修改其样式,从而达到程序的风格统一.可是当你不得不弹出一个消息框通知用户消息时(虽然很不建议在程序中频繁 ...
- 网盘直链工具 winform版 V1.0
软件需要.net2.0支持 win7及以上版本用户无需安装 xp用户需要安装 支持网盘:好盘 坚果云 百度云 乐视云 华为网盘 微云 新浪网盘 126disk 速度盘 乐齐盘 天空网盘 千脑网盘 可乐 ...
- 保卫萝卜官方PC版——含绿色版 V1.0.6Beta
官方网站 | 安装版 | 绿色版
- 免费了 -- EXCEL插件 智表ZCELL 普及版V1.0 发布了!!!
智表(zcell)是一款浏览器仿excel表格jquery插件.智表可以为你提供excel般的智能体验,支持双击编辑.设置公式.设置显示小数精度.下拉框.自定义单元格.复制粘贴.不连续选定.合并单元格 ...
随机推荐
- Fast Möbius Transform 学习笔记 | FMT
小 Tips:在计算机语言中 \(\cap\) = & / and, \(\cup\) = | / or First. 定义 定义长度为 \(2^n\) 的序列的 and 卷积 \(A = B ...
- code::blocks更改编译器配置
- 效率工具mysoV0.3.0功能介绍
也许大家在日常工作中,有使用过提升效率的工具,比如快速搜索文件的Everything:火柴:Listary等,这些工具都在一定程度上提升您的工作效率.myso作为后来者,跟上述软件一样,也是为提升 ...
- 扩展Unity编辑器顶部Toolbar,增加自定义按钮
游戏需要增加几种启动模式,要在编辑器顶部Toolbar处增加几个按钮:进行下扩展. 这部分Unity没有直接提供接口,需通过反射实现.看了下有一个开源库: https://github.com/mar ...
- 谈谈 Spring 的过滤器和拦截器
前言 我们在进行 Web 应用开发时,时常需要对请求进行拦截或处理,故 Spring 为我们提供了过滤器和拦截器来应对这种情况.那么两者之间有什么不同呢?本文将详细讲解两者的区别和对应的使用场景. ( ...
- C++:查漏补缺笔记
文章目录 数组 一维数组 初始化数组 数组名 二维数组 函数 函数声明 函数的分文件 函数重载 指针 空指针 野指针 const 结构体指针 指针++ 指针与函数 地址传递 C++引用 面向对象易错点 ...
- .net Core中实现SHA加密
#region 用SHA1加密字符串 /// <summary> /// 用SHA1加密字符串 /// </summary> /// <param name=" ...
- 逆向WeChat(四)
本篇在博客园地址https://www.cnblogs.com/bbqzsl/p/18209439 mars 先回顾一下,在上两篇我对wechat如何使用chrome::base框架的分析中存有错漏. ...
- 基于WebSocket的modbus通信(一)- 客户端
上一篇已经实现了ModbusTcp服务器和8个主要的功能码,只是还没有实现错误处理功能. 但是在测试客户端时却发现了上一篇的一个错误,那就是写数据成功,服务器不需要响应. 接下来要做的就是实现Modb ...
- 【Java编程教程】详解Java 中的对象和类
在本页中,我们将了解 Java 对象和类.在面向对象的编程技术中,我们使用对象和类来设计程序. Java中的对象既是物理实体又是逻辑实体,而Java中的类只是逻辑实体. 什么是Java中的对象 具有状 ...