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,如果少于这个值就会抛出内存不足的错误。
最后的运行结果:
