【雕爷学编程】MicroPython动手做(39)——机器视觉之图像基础

MixPY——让爱(AI)触手可及

在这里插入图片描述

【雕爷学编程】MicroPython动手做(39)——机器视觉之图像基础_第1张图片
【雕爷学编程】MicroPython动手做(39)——机器视觉之图像基础_第2张图片
在这里插入图片描述

MixPY布局

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

主控芯片:K210(64位双核带硬件FPU和卷积加速器的 RISC-V CPU)
显示屏:LCD_2.8寸 320*240分辨率,支持电阻触摸
摄像头:OV2640,200W像素
扬声器:3W单声道喇叭,及2.5mm双声道耳机孔
麦克风:一颗数字高灵敏MEMS硅麦
存储介质:16MBFlash,可外接<32G calss10 TF内存卡
板载功能:RGB三色灯,自定义2颗按键,重力感应
电池管理:PMU电源管理,3重电池保护电路及550mah锂电池
无线网卡:ESP8285,WiFi无线网卡
下载驱动:CH340,USB转TTL串口驱动电路
外接拓展:3个 Type-C扩展接口,可外接18IO口及双电源输出

【雕爷学编程】MicroPython动手做(39)——机器视觉之图像基础_第3张图片
1、简介
使用MixPY与MixNO开发板硬件以及MixPY软件平台,发挥AI人工智能 K210芯片的算力优势,引入机器视觉概念,从简单的图像基础开始,通过一些MicroPython实际图像处理的小案例,着手学习在LCD屏幕上绘制直线、矩形、圆形和文字等。

在这里插入图片描述

2、知识点
(1)机器视觉(Machine vision)
是人工智能正在快速发展的一个分支。简单说来,机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是通过机器视觉产品(即图像摄取装置,分CMOS和CCD两种)将被摄取目标转换成图像信号,传送给专用的图像处理系统,得到被摄目标的形态信息,根据像素分布和亮度、颜色等信息,转变成数字化信号;图像系统对这些信号进行各种运算来抽取目标的特征,进而根据判别的结果来控制现场的设备动作。

机器视觉是一项综合技术,包括图像处理、机械工程技术、控制、电光源照明、光学成像、传感器、模拟与数字视频技术、计算机软硬件技术(图像增强和分析算法、图像卡、 I/O卡等)。一个典型的机器视觉应用系统包括图像捕捉、光源系统、图像数字化模块、数字图像处理模块、智能判断决策模块和机械控制执行模块。机器视觉系统最基本的特点就是提高生产的灵活性和自动化程度。在一些不适于人工作业的危险工作环境或者人工视觉难以满足要求的场合,常用机器视觉来替代人工视觉。同时,在大批量重复性工业生产过程中,用机器视觉检测方法可以大大提高生产的效率和自动化程度。

在这里插入图片描述

(2)机器视觉技术
是一门涉及人工智能、神经生物学、心理物理学、计算机科学、图像处理、模式识别等诸多领域的交叉学科。机器视觉主要用计算机来模拟人的视觉功能,从客观事物的图像中提取信息,进行处理并加以理解,最终用于实际检测、测量和控制。机器视觉技术最大的特点是速度快、信息量大、功能多。机器视觉主要用计算机来模拟人的视觉功能,但并不仅仅是人眼的简单延伸,更重要的是具有人脑的一部分功能一一从客观事物的图像中提取信息,进行处理并加以理解,最终用于实际检测、测量和控制。

将机器视觉技术应用于禽蛋品质检测具有人工检测所无法比拟的优势。表面缺陷与大小、形状是蛋品品质的重要特征,利用机器视觉进行检测不仅可以排除人的主观因素的干扰,而且还能够对这些指标进行定量描述,避免了因人而异的检测结果,减小了检测分级误差,提高了生产率和分级精度。一个典型的工业机器视觉应用系统,包括数字图像处理技术、机械工程技术、控制技术、光源照明技术、光学成像技术、传感器技术、模拟与数字视频技术、计算机软硬件技术、人机接口技术等。

机器视觉不同于计算机视觉,它涉及图像处理、人工智能和模式识别。机器视觉是专注于集合机械,光学,电子,软件系统,检查自然物体和材料,人工缺陷和生产制造过程的工程,它是为了检测缺陷和提高质量,操作效率,并保障产品和过程安全。它也用于控制机器。机器视觉是将计算机视觉应用于工业自动化。

在这里插入图片描述

(3)图像处理
图像处理是对图像进行分析、加工和处理,使其满足视觉、心理以及其他要求的技术。图像处理是信号处理在图像域上的一个应用。大多数的图像是以数字形式存储,因而图像处理很多情况下指数字图像处理。此外,基于光学理论的模拟图像处理方法依然占有重要的地位。图像处理是信号处理的子类,另外与计算机科学、人工智能等领域也有密切的关系。传统的一维信号处理的方法和概念很多仍然可以直接应用在图像处理上,比如降噪、量化等。然而,图像属于二维信号,和一维信号相比,它有自己特殊的一面,处理的方式和角度也有所不同。几十年前,图像处理大多数由光学设备在模拟模式下进行。由于这些光学方法本身所具有的并行特性,至今他们仍然在很多应用领域占有核心地位,例如全息摄影。但是由于计算机速度的大幅度提高,这些技术正在迅速的被数字图像处理方法所替代。从通常意义上讲,数字图像处理技术更加普适、可靠和准确。比起模拟方法,它们也更容易实现。专用的硬件被用于数字图像处理,例如,基于流水线的计算机体系结构在这方面取得了巨大的商业成功。今天,硬件解决方案被广泛的用于视频处理系统,但商业化的图像处理任务基本上仍以软件形式实现,运行在通用个人电脑上。

在这里插入图片描述

(4)LCD屏幕绘图

【雕爷学编程】MicroPython动手做(39)——机器视觉之图像基础_第4张图片

3、绘制直线

#MicroPython动手做(39)——机器视觉之图像基础
#绘制直线

import mixno
import lcd
import image


lcd.init(freq=15000000,color=0)
image = image.Image()
while True:
    lcd.display(image.draw_line([20,120,300,120],248,1))

【雕爷学编程】MicroPython动手做(39)——机器视觉之图像基础_第5张图片
MixPY 实验图形编程

【雕爷学编程】MicroPython动手做(39)——机器视觉之图像基础_第6张图片

Image 类_ 图像对象函数( import image )
图像对象是机器视觉操作的基本对象

(1)构造图像对象

class image.Image(path[,copy_to_fb=False])

打开一个新的图像对象

参数:
path: 图像对象路径, 比如/sd/MixPY.jpg,支持bmppgmppmjpgjpeg格式的图像文件
copy_to_fb:图像介质
True,图像会直接载入帧缓冲区,可以加载大幅图片了
False,图像会载入MicroPython的堆中,堆远比帧缓冲区小

返回:
返回一个对象, 根据不同格式返回的对象不同

对于JPEG图像而言,“[]”使得您可以访问压缩的节数组形式的JPEG图像色块。由于JPEG图像是压缩的字节流形式,因而对数据组的读取和写入是不透明的。

图像还支持读缓冲区操作。您可以把图像当作节数组对象,将图像输入所有类型的MicroPython函数。若您想传送一个图像,可以将它传递给UART /SPI/ I2C写入函数,可实现自动传送。

(2)绘制直线

.draw_line(x0,y0,x1,y1[,color[,thickness=1]])

图像上绘制一条从(x0,y0)到(x1,y1)的线

参数:
x0,y0,x1,y1:绘制的直线的起点坐标与终点坐标,可以为单独传递,也可以为元组
color:绘制的直线颜色(默认白色):
RGB56516 位的颜色值,比如0xFFFF
RGB888元组, 比如(236, 36, 36)
GRAYSCALE灰度图素值(0-255)
thickness:控制线的粗细像素

返回:
返回一个图像对象
不支持压缩图像

小实验之2 绘制多条彩色直线

#MicroPython动手做(39)——机器视觉之图像基础
#绘制多条彩色直线

import time
import mixno
import lcd
import image


lcd.init(freq=15000000,color=0)
image = image.Image()
lcd.display(image.draw_line([160,0,160,240],248,5))
time.sleep_ms(1000)
lcd.display(image.draw_line([0,120,320,120],57351,5))
time.sleep_ms(1000)
lcd.display(image.draw_line([0,0,320,240],7936,5))
time.sleep_ms(1000)
lcd.display(image.draw_line([0,240,320,0],57599,5))

实验场景图

【雕爷学编程】MicroPython动手做(39)——机器视觉之图像基础_第7张图片

MixPY 实验图形编程

【雕爷学编程】MicroPython动手做(39)——机器视觉之图像基础_第8张图片

你可能感兴趣的:(MicroPython动手做,嵌入式硬件,物联网,人工智能,单片机,python,机器视觉,K210)