本文主要是介绍OpenCV中的圆形标靶检测——findCirclesGrid()(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
如前所述,OpenCV中可以使用findCirclesGrid()实现圆形标靶的检测,该函数的计算流程分为1)斑点形状的检测,和2)基于规则的斑点形状的过滤与定位。第一步将类似圆斑形状的区域检测出来,但可能存在一些误检测的噪声,第二步则利用圆斑的分布规则(M*N排列)进行进一步的过滤,以抑制噪声的影响。
在前面的章节中我们已经介绍了第一步中使用到的SimpleBlobDetector算法类,现在开始介绍第二部分的相关内容。
与findCirclesGrid()相关的代码文件如下
opencv2/calib3d.hpp
opencv-3.4.7\modules\calib3d\src\circlesgrid.cpp
opencv-3.4.7\modules\calib3d\src\circlesgrid.hpp
这里把与findCirclesGrid()相关的数据结构定义、API等整理如下,从API的入参也可以看出findCirclesGrid()内部会先调用SimpleBlobDetector算法类进行圆斑的检测,然后再根据一些规则进行标靶的过滤和排列。
// 基于距离向量计算的算法用到的参数结构体定义
struct CV_EXPORTS_W_SIMPLE CirclesGridFinderParameters
{CV_WRAP CirclesGridFinderParameters();CV_PROP_RW cv::Size2f densityNeighborhoodSize;
这篇关于OpenCV中的圆形标靶检测——findCirclesGrid()(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!