K210学习笔记(5-机器视觉)

一、LCD屏幕

        基础知识:

                构造函数:

                        lcd.init(type=1, freq=15000000, color=lcd.BLACK):

                        功能:初始化lcd

                        · type:lcd类型;

                        · freq:通信频率;

                        · color:LCD初始化的颜色。

                使用方法:

                        lcd.deinit():

                        功能:注销lcd驱动,释放IO引脚。

                        lcd.clear(color):

                        功能:填充指定颜色。默认黑色。

                        lcd.draw_string(x, y, str, color, bg_color):

                        功能:写字符。

                        · [x,y]:起始坐标;

                        · str:字符内容;

                        · color:字符颜色;

                        · bg_color:背景颜色。

                        lcd.display(image, roi=Auto):

                        功能:显示图片。

                        · image:RGB565或GRAYSCALE(灰度)图片;

                        · roi:显示的感兴趣区域,未指定为图像大小。

                        

                        lcd.rotation(dir):

                        功能:LCD屏幕方向设定。

                        · dir:取值范围[0, 3],从0到3依顺时针旋转

                        

                        lcd.mirror(invert):

                        功能:镜面显示。

                        · invert:=True则为镜面显示;False则否

        基础实验:在屏幕上显示字符:

# 使用putty运行,可以很好的看出每一步的运行结果
import lcd # 引入lcd模块

lcd.init() # 初始化lcd,没有参数填入即全部为默认值,执行此步后屏幕变黑
lcd.clear(lcd.WHITE) # 将LCD屏幕变为白色,即将整个屏幕填充为白色

lcd.draw_string(110, 120, "Hello,K210!", lcd.BLACK, lcd.WHITE) # 绘制字符Hello,K210!,字符为黑色,背景为白色

二、sensor(摄像头)

        sensor基础知识:

              构造函数:sensor

                摄像头对象,通过import直接调用

                使用方法:

                        sensor.reset():

                                功能:初始化摄像头。

                        sensor.set_pixformat(pixformat):

                                功能:设置像素格式。pixformat有三个参数。

                                · sensor.GRAYSCAL:灰度图像,每像素8位(1字节),处理速度快

                                · sensor.RGB565:每像素16位(2字节),5位红,6位绿,5位蓝,处理较慢

                        sensor.set_framesize(framesize):

                                功能:设置每帧大小(即图像尺寸)。常用的framesize参数有下面这些:

                                · sensor.QQVGA:160*120;

                                · sensor.QVGA:320*240;

                                · sensor.VGA:640*480。

                        sensor.skip_frames([n, time]):

                                功能:摄像头设置后跳过n帧或等待时间time让其稳定。

                                · n:跳过帧数;

                                · time:等待时间,单位ms。

                                · 若均每指定,则默认跳过300ms的帧。

                        sensor.snapshot():

                                功能:使用相机拍摄一张照片,并返回image对象。

                        sensor.set_vflip(enable):

                                功能:设置镜头垂直翻转。

                                · enable:1为启动,0为不启动。

        clock模块基础知识:

                构造函数:

                        clock=time.clock():

                                功能:创建一个时钟。

                使用方法:

                        clock.tick():

                                功能:开始追踪运行随时间。

                        clock.fps():

                                功能:停止追踪运行时间,并返回当前FPS(每秒帧数)。

                                在调用该函数时始终首先调用tick。

        基础实验:显示摄像头拍摄的实时FPS

# 使用摄像头测量帧率
import lcd # 引入lcd模块
import sensor # 引入摄像头模块
import time # 引入时间模块
import image # 引入机器视觉模块

lcd.init() # 初始化lcd模块
sensor.reset() # 初始化摄像头
sensor.set_vflip(1) # 设置摄像头位后置模式,所见即所得

sensor.set_pixformat(sensor.RGB565) # 设置像素格式为彩色
sensor.set_framesize(sensor.QVGA) # 设置帧格式为QVGA,320*240
sensor.skip_frames() # 等待摄像头稳定,跳过一系列不稳定的值
clock = time.clock() # 创建一个时钟变量来追踪FPS

while True:
    clock.tick() # 开启追踪
    img = sensor.snapshot().lens_corr(1.8) # 创建图片变量并将拍摄到的图片存入,消除圆筒畸变
    lcd.display(img) # 在lcd屏幕上显示img
    print(clock.fps()) # 在串行终端上打印FPS

三、机器视觉(image)——画图:

        基础知识:

                 构造函数:

                        1| img=sensor.snapshot()
                        2| img=image.Image(path[, copy_to_fb=False])

                                功能:创建图像,通过拍摄或读取文件路径获取。

                                · copy_to_fb=True:可以加在大图片;

                                · copy_to_fb=False:不可以加载大图片。

img = image.Image("图片名.格式", copy_to_fb=True) # 表示加载根目录下的图片,要先将图片传递才行。

                使用方法:

                        img.draw_line(x0, y0, x1, y1[, color[, thicknesd=1]]):

                                功能:画线段

                                · (x0,y0):起始坐标;

                                · (x1,y1):终点坐标;

                                · color:颜色,如(255,0,0)为红,(0,255,0)为绿,(0,0,255)为蓝;

                                · thickness:粗细。

                        image.draw_rectangle(x,y,w,h[,thickness=1[,fill=False]]]):

                                功能:画矩形。

                                · (x,y):起始坐标。

                                · w:宽度;

                                · h:高度;

                                · color:颜色;

                                · thickness:边框粗细;

                                · fill:是否填充。

                        image.draw_circle(x,y,radius[,color[,thickness=1[,fill=False]]]):

                                功能:画圆。

                                · (x,y):圆心;

                                · radius:半径;

                                · color:颜色;

                                · thickness:线条粗细;

                                · fill:是否填充。

                

                        image.draw_arrow(x0,y0,x1,y1[,color[,size,[thickness=1]]]):

                                功能:画箭头。

                                · (x0,y0):起始坐标;

                                · (x1,y1):终点坐标;

                                · color:颜色;

                                · size:箭头位置大小;

                                · thickness:线粗细。

                        image.draw_cross(x,y[,color[,size=5[,thickness=1]]]):

                                功能:画十字交叉。

                                · (x,y):交叉坐标;

                                · color:颜色;

                                · size:尺寸;

                                · thickness:线粗细。

                        image.draw_string(x,y,text[,color[,scale=1[,mono_space=True...]]]]):

                                功能:写字符。

                                · (x,y):起始坐标;

                                · text:字符内容;

                                · color:颜色;

                                · scale:字体大小;

                                · mono_space:强制间距。

        基础实验:

# 使用摄像头测量帧率
import lcd # 引入lcd模块
import sensor # 引入摄像头模块
import time # 引入时间模块
import image # 引入机器视觉模块

lcd.init() # 初始化lcd模块
sensor.reset() # 初始化摄像头
sensor.set_vflip(1) # 设置摄像头位后置模式,所见即所得

sensor.set_pixformat(sensor.RGB565) # 设置像素格式为彩色
sensor.set_framesize(sensor.QVGA) # 设置帧格式为QVGA,320*240
sensor.skip_frames() # 等待摄像头稳定,跳过一系列不稳定的值
clock = time.clock() # 创建一个时钟变量来追踪FPS

while True:
    clock.tick() # 开启追踪
    img = sensor.snapshot() # 创建图片变量并将拍摄到的图片存入
    # 画线段,起始坐标为(20,20);终止坐标为(100,20),颜色为红色,线宽度为2
    img.draw_line(20, 20, 100, 20, color = (255, 0, 0), thickness = 2)
    # 画矩形,起始坐标为(150,20),宽度为100,高度为30,颜色为绿色,边框粗度为2,设置为非填充。
    img.draw_rectangle(150, 20, 100, 30, color = (0, 255, 0), thickness = 2, fill = False)
    # 画圆形,圆心坐标为(60,120),半径为40,颜色为蓝色,边框宽度为2,不填充
    img.draw_circle(60, 120, 40, color = (0, 0, 255), thickness = 2, fill = False)
    # 画箭头,起始坐标(150,120),终点坐标(250,120),颜色为白色,箭头大小为20,线宽度为2
    img.draw_arrow(150, 120, 250, 120, color=(255, 255, 255), size = 20, thickness = 2)
    # 画十字交叉,交叉坐标为(60,200),颜色为白色,尺寸为20,线宽度为2
    img.draw_cross(60, 200, color = (255, 255, 255), size = 20, thickness = 2)
    # 写字符,起始坐标为(150,200),字符为"JiangXianFengGe",颜色为白色,字体大小为2,无强制间距。
    img.draw_string(150, 200, "JiangXianFengGe", color = (255, 255, 255), scale = 2, mono_space = False)
    lcd.display(img) # 在lcd屏幕上显示img
    print(clock.fps()) # 在串行终端上打印FPS

 

  • 23
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

江弦凤歌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值