如何判断轮廓是否为圆?
如何判断轮廓是否为圆? 判断一个轮廓是否为圆?这看似简单的问题,在opencv中并没有现成的函数。当我真正想运用的时候,却发现还是有许多内容在里面的。 比如这幅图片,由于瓶口是有缺陷的,造成找到的最大外轮廓不闭合。那么该如何判断这个轮廓是否是圆了。 我认为从两点来考虑。 一个是圆的定义: “平面上到定点的距离等于定长的所有点组成的图形叫做圆.定点称为圆心,定长称为半径.” 那么就来判断当前轮廓到一个定点的距离是否为定长。这里这个定点就可以采用外接圆圆心。而这里的度量是标准差。 经过试验发现,对于这些有缺陷的情况,其标准差都是比较大的(一般大于5),而对于没有缺陷的情况来说,其标准差都比较小(小于1)。 但是这并不能完全地解决问题,比如存在这样的情况,其轮廓上所有点到定点的标准差也是不大的,但是这个轮廓没有构成一个闭合曲线,所以也没有构成圆。 //根据轮廓点和圆心计算方差 floatComputeVariance(std::vector<cv::Point>theContour,Point2ftheCenter) { i...

