机器视觉篇

1:实现LCD显示文字

机器视觉篇_第1张图片

'''
实验名称:LCD
版本: v1.0
日期: 2022.12
作者: 01Studio
说明:编程实现LCD显示信息。需要将01Studio.bmp文件发送到开发板
'''

import lcd,image,utime

lcd.init() #初始化LCD
lcd.clear(lcd.WHITE) #清屏白色

#显示字符
lcd.draw_string(110, 120, "Hello 01Studio!",lcd.BLACK, lcd.WHITE) #显示字符

utime.sleep(3) #延时2秒

lcd.rotation(1) #由于图像默认是240*320,因此顺时钟旋转90°。

#显示图像,必须先将01Studio.bmp文件发送到开发板才能正常运行
#发送方法:IDE菜单栏 -- 工具 --保存文件到开发板
lcd.display(image.Image("01Studio.bmp"))

 

2:摄像头应用 :
机器视觉篇_第2张图片

# Hello World 例程

# 欢迎使用 CanMV IDE!
#
# 1. 将开发板连接到电脑;
# 2. 在工具->选择开发板下选择合适的开发板;
# 3. 点击连接并选择串口;
# 4. 连接成功后点击绿色按钮开始运行!
#
#翻译和注释:01Studio

import sensor, image, time, lcd

lcd.init(freq=15000000)             #初始化LCD
sensor.reset()                      #复位和初始化摄像头,执行sensor.run(0)停止。
sensor.set_vflip(1)                 #将摄像头设置成后置方式(所见即所得)


sensor.set_pixformat(sensor.RGB565) # 设置像素格式为彩色 RGB565 (或灰色)
sensor.set_framesize(sensor.QVGA)   # 设置帧大小为 QVGA (320x240)
sensor.skip_frames(time = 2000)     # 等待设置生效.
clock = time.clock()                # 创建一个时钟来追踪 FPS(每秒拍摄帧数)

while(True):

    clock.tick()                    # 更新 FPS 时钟.
    img = sensor.snapshot()         # 拍摄一个图片并保存.
    #img.draw_string(0, 0, 'FPS: '+str(clock.fps()), color = (255, 255,255), scale = 3,mono_space = False)
    lcd.display(img)                # 在LCD上显示
    print(clock.fps())              # 注意: 当 K210 连接到 IDE 时候,运行速度减
                                    #半,因此当断开 IDE 时 FPS 会提升。

3;画图:
机器视觉篇_第3张图片

'''
实验名称:画各种图形和写字符
版本: v1.0
日期: 2022.9
作者: 01Studio
'''

import sensor, image, time, lcd

lcd.init(freq=15000000)
sensor.reset()                      #复位摄像头
sensor.set_vflip(1)                 #将摄像头设置成后置方式(所见即所得)

sensor.set_pixformat(sensor.RGB565) # 设置像素格式 RGB565 (or GRAYSCALE)
sensor.set_framesize(sensor.QVGA)   # 设置帧尺寸 QVGA (320x240)
sensor.skip_frames(time = 2000)     # 灯带设置响应.
clock = time.clock()                # 新建一个时钟对象计算FPS.

while(True):
    clock.tick()
    img = sensor.snapshot()

    # 画线段:从 x0, y0 到 x1, y1 坐标的线段,颜色红色,线宽度 2。
    img.draw_line(20, 20, 100, 20, color = (255, 0, 0), thickness = 2)

    #画矩形:绿色不填充。
    img.draw_rectangle(150, 20, 100, 30, color = (0, 255, 0),
                        thickness = 2, fill = False)

    #画圆:蓝色不填充。
    img.draw_circle(60, 120, 30, color = (0, 0, 255), thickness = 2,
                    fill = False)

    #画箭头:白色。
    img.draw_arrow(150, 120, 250, 120, color = (255, 255, 255), size =
                    20, thickness = 2)

    #画十字交叉。
    img.draw_cross(60, 200, color = (255, 255, 255), size = 20,
                    thickness = 2)

    #写字符。
    img.draw_string(150, 200, "Hello 01Studio!", color = (255, 255,
                    255), scale = 2,mono_space = False)

    lcd.display(img)                # Display on LCD
    print(clock.fps())              # Note: MaixPy's Cam runs about half as fast when connected
                                    # to the IDE. The FPS should increase once disconnected.

4:颜色识别

机器视觉篇_第4张图片

'''
实验名称:颜色识别
版本: v1.0
日期: 2022.9
作者: 01Studio
实验目的:单个颜色识别
'''

import sensor,lcd,time

#摄像头初始化
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(1) #后置模式,所见即所得

#lcd初始化
lcd.init()

clock=time.clock()

# 颜色识别阈值 (L Min, L Max, A Min, A Max, B Min, B Max) LAB模型
# 下面的阈值元组是用来识别 红、绿、蓝三种颜色,当然你也可以调整让识别变得更好。
thresholds = [(30, 100, 15, 127, 15, 127), # 红色阈值
              (30, 100, -64, -8, -32, 32), # 绿色阈值
              (0, 30, 0, 64, -128, -20)] # 蓝色阈值

while True:

    clock.tick()

    img=sensor.snapshot()

    blobs = img.find_blobs([thresholds[2]]) # 0,1,2分别表示红,绿,蓝色。
    if blobs:
        for b in blobs:
            tmp=img.draw_rectangle(b[0:4])
            tmp=img.draw_cross(b[5], b[6])

    lcd.display(img)     #LCD显示图片
    print(clock.fps())   #打印FPS

5:计数

机器视觉篇_第5张图片

'''
实验名称:颜色识别
版本: v1.0
日期: 2022.9
作者: 01Studio
实验目的:单个颜色识别
'''

import sensor,lcd,time

#摄像头初始化
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(1) #摄像头后置模式

#lcd初始化
lcd.init()

clock=time.clock()

# 颜色识别阈值 (L Min, L Max, A Min, A Max, B Min, B Max) LAB模型
# 下面的阈值元组是用来识别 红、绿、蓝三种颜色,当然你也可以调整让识别变得更好。

thresholds = [(18, 72, -13, 31, 18, 83)]#黄色跳线帽阈值

while True:

    clock.tick()

    img=sensor.snapshot()

    blobs = img.find_blobs([thresholds[0]]) # 找黄色跳线帽色块

    if blobs:
        print(len(blobs))
        #计算色块数量并在LCD显示
        img.draw_string(0, 0, 'Num: '+str(len(blobs)), color = (255, 255,255), scale = 3,mono_space = False)

        for b in blobs:
            tmp=img.draw_rectangle(b[0:4])
            tmp=img.draw_cross(b[5], b[6])

    lcd.display(img)     #LCD显示图片
    print(clock.fps())   #打印FPS

6:二维码识别

#实验名称:二维码识别
#版本:v1.0
#日期:2022.9
#翻译和注释:01Studio

import sensor,lcd,time

#摄像头模块初始化
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(1)     #后置模式
sensor.skip_frames(30)

#lcd初始化
lcd.init()

clock = time.clock()

while True:

    clock.tick()

    img = sensor.snapshot()
    res = img.find_qrcodes() #寻找二维码

    if len(res) > 0: #在图片和终端显示二维码信息
        img.draw_rectangle(res[0].rect())
        img.draw_string(2,2, res[0].payload(), color=(0,128,0), scale=2)
        print(res[0].payload())

    lcd.display(img)
    print(clock.fps())

机器视觉篇_第6张图片机器视觉篇_第7张图片

你可能感兴趣的:(K2101开发板,单片机)