K210_set_windowing(roi)_ROI列表无法设置x和y的问题

一、现象

 

上面这张图是 320*240的原图数据

摄像头得到的QVGA/或其他更大的像素格式 的图像

 

上面这张是 set_windowing((224,224))

set_windowing((224,224)) 会导致 取到的是 左上角224*224的图像

ROI = (x,y,w,h)=(0,0,224,224)

根据set_windowing函数的声明,这时候通过设置ROI的x和y值 使 感兴趣区域 变为摄像头得到1的图像的中央

然而实际没有效果

结果搜索和技术支持的询问——maixbit自带的摄像头 的驱动 不支持 set_windowing函数中对ROI的x,y进行设置

二、解决办法

(一)物理解决办法,也是我在网上看到的大部分办法

将 k210摄像头的位置放在小车/云台中线偏右的地方 , 使模型的输入为小车正对着的数字

但是显然 误差很大

而且这样子能看到的范围很小,只能镜头的左上角看小车的正前方,而镜头右边的视野完全被set_window切割了

导致 小车在识别4个数字上 k210性能是足够识别4个,但是还是得一左一右两个k210来识别

(二)代码解决,网上没有,严重怀疑是我初创( )让我慰藉一下电赛前1.5个月都花在这个k210上面

(1)一开始的思路——除了set_windowing(roi),还有什么函数可以用

原则——我们是为了 预处理摄像头的图像 从而使模型的输入图像 是224*224 且是摄像头正对的图像,以摄像头为中线

img.copy(roi = (48,8,224,224))也可以设置输入图像的在摄像头源图像上的ROI

但是两者差别在哪呢?

set_windowing是sensor模块下的函数——即与摄像头有关,处理的是摄像头的图像

copy函数是ide带的对图像进行处理的函数——然而这里图像是由摄像头处理后的得到的

这有什么区别呢?

涉及到k210的存储系统

分为RGB565和888一个是pix格式,一个是给kpu处理的图像数据格式

然而如果是这样子写,会发现程序会在此处终止,结束执行,甚至k210会与ide断链

直接原因是 内存爆了

根本原因是 在图像处理的路上面 多了一个图片变量 而k210的内存本来就小,才8M吧

摄像头的照片 没试过能不能装在SD卡的区域内

但是没装sd卡也可以 处理摄像头照片且跑模型

解决办法就是 让这个路上只要有一个图像变量就行

    img = sensor.snapshot()
    img.copy(roi = (48,8,224,224),copy_to_fb = img)
    img.pix_to_ai()

#然后在输入图像给模型
    objects = kpu.run_yolo2(task, img)

后续还可以 通过 灰度图 来增快帧率

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值