4662浏览
查看: 4662|回复: 2

[项目分享] k210用maixpy实现二维码与颜色同时识别

[复制链接]

k210用maixpy实现二维码与颜色同时识别

代码如下

import sensor
import image
import lcd
import time

#设置clock对象
clock = time.clock()

#初始化LCD显示屏
lcd.init()

#初始化摄像头
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_vflip(1)
sensor.set_hmirror(1)
sensor.run(1)
sensor.skip_frames(10)
mylist = [0,0,0]
while True:
    clock.tick()
    #寻找二维码,并获取二维码信息
    img_QRCode = sensor.snapshot()
    QRCode = img_QRCode.find_qrcodes()
    img = sensor.snapshot()
    #设置识别颜色的区域
    img = img.draw_rectangle([135,95,50,50],image.lab_to_rgb(mylist),2,0)

    #创建直方图对象
    color = img.get_histogram(roi=[135,95,50,50])

    #计算直方图频道的CDF
    mylist[0]=color.get_percentile(0.5).l_value()
    mylist[1]=color.get_percentile(0.5).a_value()
    mylist[2]=color.get_percentile(0.5).b_value()

    #输出颜色的三个通道值
    txts = (str((str((str((mylist[0])))) + str(","))) + str((str((str((str((mylist[1])))) + str(","))) + str((str((mylist[2])))))))
    img = img.draw_string([0,0][0],[0,0][1],txts,image.lab_to_rgb(mylist),3,mono_space=0)
    img = img.draw_rectangle([270,0,50,50],image.lab_to_rgb(mylist),1,1)
    #输出所识别到的二维码信息
    if len(QRCode) > 0:
        img.draw_string(10,30, QRCode[0].payload(), color=(0,128,0), scale=2)
    lcd.display(img)

问题

一开始写完代码,运行的时候就报错了

抛出内存不足的错误,这时我们可以用

import KPU
KPU.memtest()

来查看gc和sys的内存大小

此时sys的内存只有992k,所以会抛出内存不足
可以用

from Maix import utils
import machine

print(utils.gc_heap_size())

utils.gc_heap_size(838860)
machine.reset()

将gc中的一些内存转移到sys中,此时sys内存为

大概的测试了一下,1200kb为最小值≈1.2mb,如果少于这个值就会抛出内存不足的错误。

最后的运行结果:

米老鼠m  学徒 来自手机

发表于 2021-3-19 16:19:10

RUI_Worker 发表于 2021-3-19 15:58
[md]# k210用maixpy实现二维码与颜色同时识别



大佬的解说十分详细,太感谢大佬的解答啦,感恩的心,感谢有您
回复

使用道具 举报

猪百岁  初级技匠

发表于 2021-3-19 21:34:30

大佬,我顶!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail