终有花开见月明 2022-08-04 20:53 采纳率: 75%
浏览 106
已结题

在搞一个水果识别的小项目时,对不同水果分别计数时的问题。

问题遇到的现象和发生背景

最近在搞一个水果识别的小项目,遇到一些问题,大概就是利用k210进行云端训练,目前已经成功识别出了水果(红苹果),现在想要识别两种苹果,一种是青苹果,一种是红苹果;k210识别之后,分别统计两种苹果的数目(这一点我没有头绪),可以利用串口与上位机通信,获取到两种苹果的数目(比如说打印出来?),问题就是k210那端识别出来该怎么分别计数呢,如何避免对一个苹果重复识别?
求各位给点思路。

下面是k210单单只是识别红苹果的代码,识别绿苹果的我还没有训练

问题相关代码,请勿粘贴截图

generated by maixhub, tested on maixpy3 v0.4.8

copy files to TF card and plug into board and power on

import sensor, image, lcd, time
import KPU as kpu
import gc, sys

input_size = (224, 224)
labels = ['apple']
anchors = [3.28, 4.04, 2.75, 3.56, 4.44, 5.31, 3.16, 4.33, 3.62, 4.29]

def lcd_show_except(e):
import uio
err_str = uio.StringIO()
sys.print_exception(e, err_str)
err_str = err_str.getvalue()
img = image.Image(size=input_size)
img.draw_string(0, 10, err_str, scale=1, color=(0xff,0x00,0x00))
lcd.display(img)

def main(anchors, labels = None, model_addr="/sd/m.kmodel", sensor_window=input_size, lcd_rotation=0, sensor_hmirror=False, sensor_vflip=False):
sensor.reset() #初始化摄像头
sensor.set_pixformat(sensor.RGB565) #设置摄像为RGB565格式
sensor.set_framesize(sensor.QVGA)#分辨率为QVGA,即320x240
sensor.set_windowing(sensor_window)#设置摄像头为224,224
sensor.set_hmirror(sensor_hmirror)#设置摄像头水平镜像 enable 开启水平镜像
sensor.set_vflip(sensor_vflip)# 设置摄像头垂直镜像 表示开启垂直镜像
sensor.run(1)

lcd.init(type=1)
lcd.rotation(lcd_rotation) #反转LCD屏幕
lcd.clear(lcd.WHITE)

if not labels:
    with open('labels.txt','r') as f:
        exec(f.read())
if not labels:
    print("no labels.txt")
    img = image.Image(size=(320, 240))
    img.draw_string(90, 110, "no labels.txt", color=(255, 0, 0), scale=2)
    lcd.display(img)
    return 1
try:
    img = image.Image("startup.jpg")
    lcd.display(img)
except Exception:
    img = image.Image(size=(320, 240))
    img.draw_string(90, 110, "loading model...", color=(255, 255, 255), scale=2)
    lcd.display(img)

try:
    task = None
    task = kpu.load(model_addr) #加载模型
    kpu.init_yolo2(task, 0.5, 0.3, 5, anchors) # threshold:[0,1], nms_value: [0, 1]
    while(True):
        img = sensor.snapshot()#拍一张照片
        t = time.ticks_ms()
        objects = kpu.run_yolo2(task, img)#task:SD卡中的模型,img:目前相机拍照的图像,返回一个 kpu_yolo2_find 的列表
        t = time.ticks_ms() - t
        if objects:
            for obj in objects:#取出列表中的对象
                pos = obj.rect()#返回一个矩形元组(x, y, w, h) ,用于如色块边界框的 image.draw_rectangle 等
                img.draw_rectangle(pos)
                img.draw_string(pos[0], pos[1], "%s : %.2f" %(labels[obj.classid()], obj.value()), scale=2, color=(255, 0, 0))
        img.draw_string(0, 200, "t:%dms" %(t), scale=2, color=(255, 0, 0))
        lcd.display(img)
except Exception as e:
    raise e
finally:
    if not task is None:
        kpu.deinit(task) #释放模型占用的内存, 立即释放, 但是变量还在

if name == "main":
try:
# main(anchors = anchors, labels=labels, model_addr=0x300000, lcd_rotation=0)
main(anchors = anchors, labels=labels, model_addr="/sd/model-9043.kmodel")
except Exception as e:
sys.print_exception(e)
lcd_show_except(e)
finally:
gc.collect()#自动释放内存

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-08-05 06:03
    关注
    文章:图像处理实践 | 水果图像的识别与分类 中也许有你想要的答案,请看下吧
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 8月19日
  • 已采纳回答 8月11日
  • 创建了问题 8月4日

悬赏问题

  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!