Opencv识别圆,矩形,三角形的步骤(优化)

       按照之前的步骤虽然可以识别出来,但是识别效果受角度,光照的因素很大!故在原来的基础上做了些优化,最主要的是用到腐蚀膨胀函数,优化效果如下:

步骤如下:

0.通过摄像头或是加载图片的方式获取到源图;
1.调用erode , dilate函数进行腐蚀膨胀,去掉图片上面黑色字体的影响(注意内核元素的定义)!
2.调节HSV的值,通过morphologyEx函数连接一些连通域;
3.通过第2步的操作得到只保留与目标形状相近部分的图片;
4.通过cvFindContours函数检测所有轮廓;
5.通过GetAreaMaxContour函数找到最大的轮廓(加上轮廓面积条件做判断,优化识别效果);
6.如果是圆,通过cvDrawContours函数画出轮廓;如果是矩形或是三角形,通过cvApproxPoly函数进行多边形逼近;

7.如果是圆的话,用handlecicle函数进行识别,参数根据实际图片进行调节。矩形与三角形的判断方法可参考网上的,网上有!

       注意事项:

       1.在腐蚀膨胀的时候,跟定义的内核元素有很大关系。一开始的时候腐蚀膨胀偶尔会不起作用,刚刚开始认为我的封装(C#调用C++封装的DLL进行识别)出了问题,!后面经过各种测试发现不是,原因就是出在了内核元素的定义上,这是到目前为止的结论!

  • 5
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值