万无一失的OpenMV识别矩形、圆形、三角形方法
·
一、官网方法
直接使用find_circles()和find_rects()识别矩形和圆形,使用find_lines()函数寻找三条直线,利用三角形内角和180°来识别三角形。
find_circles()详解
find_rects()详解
find_lines()详解
认真看手册!认真看手册!认真看手册!重要问题说三遍!
给函数赋予的参数对最终识别效果影响非常大,一定一定要认真理解参数,然后耐心调参。
我在用这几个函数时,要么识别很多要么都识别不到,解决办法就是对图像进一步处理或者进行滤波。在背景杂乱的情况下,三角形用这个方法识别误差会很大。
二、使用识别色块
我的方法主要是识别色块,先识别颜色再识别形状,缩小判断范围。
官网手册find_blobs()详解
主要使用了函数blob.density(),返回色块的密度。这等于色块的像素数除以外框的区域。对于正视的矩形,该值应等于1,对于正视的圆形,该值应等于π/4;对于正视的三角形,则小于0.5。但实际情况是,摄像头不一定正视,再加其他因素的影响,使得这个值会上下浮动。最有效的调参方法是:先分别print矩形、圆形、三角形的density(),看大致范围后再决定参数。
代码如下:
def detect(max_blob):#输入的是寻找到色块中的最大色块
row_data=[-1,-1]#保存颜色和形状
print(max_blob.solidity())
if max_blob.density()>0.84:
row_data[0]=max_blob.code()
img.draw_rectangle(max_blob.rect())
row_data[1]=1#表示矩形
elif max_blob.density()>0.6:
img.draw_circle((max_blob.cx(), max_blob.cy(),int((max_blob.w()+max_blob.h())/4)))
row_data[0]=max_blob.code()
row_data[1]=2#表示圆形
elif max_blob.density()>0.4:
row_data[0]=max_blob.code()
row_data[1]=3#表示三角形
return row_data#返回的是两个值,颜色和形状
原本到这里已经结束了,但一直存在一个问题:矩形如果倾斜一个角度或者旋转过,计算出的density()值确实跟圆形很接近,有时候会识别成圆形,但再往下调又会将圆形识别成矩形。
经过一个同学指导,才知道有个函数max_blob.solidity(),星瞳科技里面没有提及。这个函数配合识别矩形。
最终代码:
def detect(max_blob):#输入的是寻找到色块中的最大色块
row_data=[-1,-1]#保存颜色和形状
print(max_blob.solidity())
if max_blob.solidity()>0.9 or max_blob.density()>0.84:
row_data[0]=max_blob.code()
img.draw_rectangle(max_blob.rect())
row_data[1]=1#表示矩形
elif max_blob.density()>0.6:
img.draw_circle((max_blob.cx(), max_blob.cy(),int((max_blob.w()+max_blob.h())/4)))
row_data[0]=max_blob.code()
row_data[1]=2#表示圆形
elif max_blob.density()>0.4:
row_data[0]=max_blob.code()
row_data[1]=3#表示三角形
return row_data #返回的是两个值,颜色和形状
阅读全文
AI总结
更多推荐
相关推荐
查看更多
鸿蒙开发工具大赶集

本仓将收集和展示鸿蒙开发工具,欢迎大家踊跃投稿。通过pr附上您的工具介绍和使用指南,并加上工具对应的链接,通过的工具将会成功上架到我们社区。
OpenManus

No fortress, purely open ground. OpenManus is Coming.
G-Star公益行

G-Star 公益行 是 GitCode G-Star 计划旗下专为公益机构打造的技术赋能计划,依托 GitCode 开源平台、生态流量、云计算与 AI 支持,旨在连接开源技术与公益组织,通过技术赋能帮助公益组织实现数字化转型,以提升运营效率、优化资源配置、拓展公益影响力。
热门开源项目
活动日历
查看更多
直播时间 2025-03-13 18:32:35

全栈自研企业级AI平台:Java核心技术×私有化部署实战
直播时间 2025-03-11 18:35:18

从0到1:Go IoT 开发平台的架构演进与生态蓝图
直播时间 2025-03-05 14:35:37

国产工作流引擎 终结「996」开发困局!
直播时间 2025-02-25 14:38:13

免费开源宝藏 ShopXO,电商系统搭建秘籍大公开!
直播时间 2025-02-18 14:31:04

从数据孤岛到数据智能 - 企业级数据管理利器深度解析
目录
所有评论(0)