在前面两个案例中,我们学习了图像的采集,学习了对识别结果进行标识的方法,今天,我们来看看最核心的部分:图像识别。图像的识别有很多种,大体可以分为形状识别、特征识别和颜色识别三大类,今天我们做的的是形状识别。
圆形识别的任务是要识别出图像中的圆形并作出标识,而识别出圆形,指的是能辨认出圆形并获取圆形的位置(坐标)、半径(大小)等参数,当然这个大小只是它在屏幕上的大小,不等于实际大小。下面先来看看效果。
程序运行后,正确识别出了图中的圆形并用红色进行了填充,同时在左上角显示了所计算得到的圆形的面积。
代码如上图所示,主要是用到机器视觉中的圆形识别指令进行圆形的识别,并提取圆形的相关参数。这里解释几个参数:
区域是指识别的区域,有时候为了加快效率,可以把区域缩小,缩小目标区域;
不同的阈值下识别的准确率是不一样的,因此每次都要进行阈值的调整;
最小r和最大r是指可识别的最小和最大半径,超出范围的半径不识别,同样的,可根据实际缩小这个范围以提高效率;
步长是指以该步长为单位遍历最小r和最大r范围内的圆,这个值越小,识别速度越慢,但是正确率越高;
合并值是指x,y或r相差少于此值的两个圆,识别过程中认为是同一个圆。
以上就是圆形识别的内容,留两个问题给大家思考:
1.有没有办法可以计算出所识别的圆的实际面积?(提示:跟镜头焦距和镜头与物体的距离有关)
2.其他形状如矩形也是类似的,大家可以自己试试。(矩形的识别比较慢,务必用灰度图进行识别)
评论