2024-9-5 09:39
140 次阅读|
0 个评论
第三章 CanMV 简介 本章将对 CanMV 进行简单介绍 本章分为如下几个小节: 3.1 初识 CanMV 3 .2 CanMV 的应用开发方式 3.1 初识 CanMV CanMV 是嘉楠科技针对 AIOT 编程的独立开源项目,其源代码在 G itHub 上开源( https://github.com/kendryte/canmv.git ),可在例如 Kendryte K 210 等强大的嵌入式 AI SoC 上运行, CanMV 提供了基于 MicroPython 语法的应用开发方式,但同时也支持使用基于 C 语言和 FreeRTOS 的应用开发方式。 3.2 CanMV 的应用开发方式 C anMV 提供了基于 C 语言和 FreeRTOS 的应用开发方式和基于 MicroPython 语法的应用开发方式。 当使用 CanMV 提供的基于 C 语言和 FreeRTOS 的方式进行应用开发时,开发过程使用 C 或 C++ 语言进行开发,与使用裸机 SDK 的裸机开发方式一样,这种开发方式要求开发者了解目标芯片的各种参数信息和特性,但相较于使用裸机 SDK 的裸机开发方式, CanMV 提供了移植好的 FreeRTOS 操作系统,以便开发者能够完成更加复杂多任务应用的开发。 虽然使用 C 语言的裸机或操作系统的开发方式往往能使应用具有较高的运行效率和性能,但需涉及目标芯片底层寄存器的配置并同时对开发者的嵌入式开发能力有一定要求,但如果是为了初步了解目标芯片的功能、快速地进行一些功能验证或是完成一些相对简单的功能开发,那 CanMV 提供的基于 MicroPython 语法的开发方式就是再合适不过的选择了。使用 CanMV 提供的基于 MicroPython 语法的应用开发方式,开发者可以快速且便捷地完成应用开发,以下是两个基于 MicroPython 语法的简单应用示例: 寻找 I 2 C 设备示例: 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 , face , face , face , color =( 0 , 255 , 0 )) 可以看到,使用 CanMV 提供的基于 MicroPython 语法的开发方式,仅需少量的几行代码便可实现一些简单的功能。 CanMV 的源码本质上是一套基于 C 的软件开发框架, CanMV 可谓是站在巨人的肩膀上实现的一套软件框架,为什么这么说呢?这是因为 CanMV 集成了许多现成的软件库,例如裸机 SDK 、 FreeRTOS 、 MicroPython 、 OpenMV 的图像处理库等一系列软件库,其中裸机 SDK 提供了 CanMV 驱动 Kendryte K 210 底层硬件的能力, F reeRTOS 为 CanMV 实现多核多任务的任务调度以及移植 MicroPython 成为可能, MicroPython 让 CanMV 的应用可以以类似 Python 脚本的方式进行开发, OpenMV 的图像处理库让 CanMV 的应用程序可以快速地对图像进行各种包括但不限于元素绘制、图像滤波、特征检测、色块追踪、图像对比和码识别的处理。