使用过opencv视觉库的小伙伴都知道,opencv自带的函数HoughCircles()可以用来检测圆,但无法直接检测同心圆。所以当我们在识别靶盘的时候,需要对该函数进行改进应用,以下是我的思路:
1. 对原图像进行边缘检测
2. 运用HoughCircles()函数,将其中的半径参数加以限制,由小到大扫描。取出每次扫描得分值最高的圆
3. 计算这些圆的圆心距,找出最小的圆心距,然后以该圆心为基准,判断其他圆与该圆心的距离。若小于一个阈值,则视为该圆的同心圆。
初步效果如下:
可以看出,可以有效检测出同心圆,但也有被误检的情况。调整一下参数可以改善检测的情况。实际中通过外置摄像头检测靶盘,亲测有效。
VS2013工程下载地址http://download.youkuaiyun.com/detail/u011853479/9377731