K210 LCD显示

整体代码:

import lcd, sensor, time

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_auto_exposure(1)
sensor.set_auto_gain(0, gain_db = 12)
sensor.set_auto_whitebal(0, rgb_gain_db = (0,0,0))
sensor.set_vflip(1)
sensor.set_hmirror(1)
sensor.skip_frames(time = 2000)

class lcd_show_data():
    year = 2024
    month = 01
    dat = 24
    hour = 21
    minute = 23
ping = lcd_show_data()
def lcd_show():
    lcd.draw_string(0, 0,  "Hello World", lcd.RED, lcd.WHITE)
    lcd.draw_string(0, 15, str(ping.year)+"/"+str(ping.month)+"/"+str(ping.dat), lcd.RED, lcd.WHITE)
    lcd.draw_string(0, 30, str(ping.hour)+":"+str(ping.minute), lcd.RED, lcd.WHITE)

lcd.init(freq=15000000,color=0XFFFF,invert=1,lcd_type=0)
clock = time.clock()

while(True):
    clock.tick()
    img = sensor.snapshot()
    fps = clock.fps()
    img.draw_string(230,0,("%2.1ffps"%(fps)),color=(0,0,128),scale=2)
    lcd.display(img)
    lcd_show()

效果展示:

程序说明:

1.导入库文件

import lcd, sensor, time

2.感光元件配置

sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_auto_exposure(1)
sensor.set_auto_gain(0, gain_db = 12)
sensor.set_auto_whitebal(0, rgb_gain_db = (0,0,0))
sensor.set_vflip(1)
sensor.set_hmirror(1)
sensor.skip_frames(time = 2000)

这些都是感光元件配置常使用的

①sensor.reset([, freq=24000000[, set_regs=True[, dual_buff=False]]])

参数
  • freq: 设置摄像头时钟频率,频率越高帧率越高,但是画质可能更差。默认 24MHz, 如果摄像头有彩色斑点(ov7740),可以适当调低比如 20MHz
  • set_regs: 允许程序写摄像头寄存器,默认为 True。 如果需要自定义复位序列,可以设置为False,然后使用sensor.__write_reg(addr, value) 函数自定义写寄存器序列
  • dual_buff: 默认为False。允许使用双缓冲,会增高帧率,但是内存占用也会增加(大约为384KiB)
  • choice: 指定需要搜索的摄像头类型,ov类型(1),gc类型(2),mt类型(3),不传入该参数则搜索全部类型摄像头
返回值

sensor.reset()  通常默认配置就好,dual_buff置为True可以提升帧率,但是会影响画质

②sensor.set_pixformat(format[, set_regs=True])

参数
  • format: 帧格式
  • set_regs: 允许程序写摄像头寄存器,默认为 True。 如果需要自定义设置像素格式的序列,可以设置为False,然后使用sensor.__write_reg(addr, value) 函数自定义写寄存器序列

可选的帧格式有GRAYSCALERGB565YUV422

  • GRAYSCALE主要用于黑白图像处理
  • RGB565用于彩色图像处理但色彩表现相对简单
  • YUV422则广泛应用于电视系统和模拟视频领域,能够提供更为丰富的色彩表现。
返回值
  • True : 设置成功
  • False: 设置错误
sensor.set_pixformat(sensor.RGB565) 一般都是设置为RGB565,做图像处理基本上都是用彩色的,虽然灰白也有。

③sensor.set_framesize(framesize[, set_regs=True])

参数#
  • framesize: 帧大小
  • set_regs: 允许程序写摄像头寄存器,默认为 True。 如果需要自定义设置帧大小的序列,可以设置为False,然后使用sensor.__write_reg(addr, value) 函数自定义写寄存器序列
返回值
  • True : 设置成功
  • False: 设置错误
sensor.set_framesize(sensor.QVGA) 都是设置为QVGA帧大小

④画面调整

sensor.set_auto_exposure(1)
sensor.set_auto_gain(0, gain_db = 12)
sensor.set_auto_whitebal(0, rgb_gain_db = (0,0,0))

接下来这三句,主要是:

  • 开启自动曝光(当参数为True时,自动曝光功能开启。当参数为False时,可能关闭该功能,需要手动设置曝光参数),默认是自动曝光
  • 开启或关闭自动增益控制(第一个参数False表示关闭自动增益控制,第二个参数gain_db是设置增益的初始值)
  • 开启或关闭自动白平衡(第一个参数False表示关闭白平衡功能,第二个参数gb_gain_db是设置红、绿、蓝三个通道的增益初始值)

⑤镜像调整

sensor.set_vflip(1)
sensor.set_hmirror(1)

分别是画面垂直、水平方向镜像画面,根据自己板子上的需求更改

⑥跳帧

sensor.skip_frames(time = 2000)

跳过一定帧数,稳定上电画面不平滑的问题

3.定义一个显示类

class lcd_show_data():
    year = 2024
    month = 01
    dat = 24
    hour = 21
    minute = 23

这里我定义了一个类,其实没太大必要

4.实例化对象

ping = lcd_show_data()

5.显示内容

def lcd_show():
    lcd.draw_string(0, 0,  "Hello World", lcd.RED, lcd.WHITE)
    lcd.draw_string(0, 15, str(ping.year)+"/"+str(ping.month)+"/"+str(ping.dat), lcd.RED, lcd.WHITE)
    lcd.draw_string(0, 30, str(ping.hour)+":"+str(ping.minute), lcd.RED, lcd.WHITE)

6.LCD初始化

lcd.init(freq=15000000,color=0XFFFF,invert=1,lcd_type=0)

lcd.init(type=1, freq=15000000, color=lcd.BLACK, invert = 0, lcd_type = 0)#

参数
  • type: 设备的类型(保留给未来使用):
    • 0: None
    • 1: lcd shield(默认值)
    • 2: Maix Cube
    • 5: sipeed rgb 屏转接板

type 是键值参数,必须在函数调用中通过写入 type= 来显式地调用

  • freq: LCD (实际上指 SPI 的通讯速率) 的频率

  • color: LCD 初始化的颜色, 可以是 16 位的 RGB565 颜色值,比如 0xFFFF; 或者 RGB888 元组, 比如 (236, 36, 36), 默认 lcd.BLACK

  • invertLCD 反色显示

  • lcd_type: lcd 类型:

    • 0: 默认类型
    • 1: LCD_TYPE_ILI9486
    • 2: LCD_TYPE_ILI9481
    • 3: LCD_TYPE_5P0_7P0,5 寸或 7 寸 分辨率为 800 * 480 的 lcd (需要搭配 sipeed 转接板)
    • 4: LCD_TYPE_5P0_IPS,5 寸 分辨率为 854*489 的 IPS lcd (需要搭配 sipeed 转接板)
    • 5: LCD_TYPE_480_272_4P3,4.3 寸分辨率为 480*272 的 lcd (需要搭 sipeed 配转接板)

MaixCube 和 MaixAmigo 使用 LCD 之前需要配置电源芯片,否则会出现花屏现象,这一步 MaixPy 固件会自动配置,无需手动操作,用户只需要了解即可

7.创建时钟对象

clock = time.clock()
clock.tick()
fps = clock.fps()

time.clock() 创建一个clock 对象; clock.tick() 记录开始时间(ms), 通常clock.fps()搭配使用可以计算fps

  • 36
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值