opencv没有最大内接圆的函数?需要自己用轮廓的点去算?其实不用,有个隐藏的函数一样能做。
别问为什么有了最大外接圆后还要去求最大内接圆,你做深了做久了这个问题一定会经常遇到,很多地方会有用。
先给个传统方法:
方法就是遍历轮廓内所有点,计算轮廓内部到所有点到最近轮廓点的距离。
public static void FindInnerCircleInContour(VectorOfPoint contour, out PointF center, out double radius)
{
Rectangle r = CvInvoke.BoundingRectangle(contour);
int nL = r.X, nR = r.X + r.Width; //轮廓左右边界
int nT = r.Y, nB = r.Y + r.Height; //轮廓上下边界
center = new PointF();
radius = 0;
double dist = 0;
double maxdist = 0;
for (int i = nL; i < nR; i++) //列
{
for (int j = nT; j < nB; j++) //行
{