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