使用halcon将一个圆上的点拟合成圆形并且求出圆心

我们在自动化贴装机标定过程中,需要计算吸头的旋转中心位置。我们一般使用的方法是使用模板匹配,做一个模板,吸头旋转一个角度寻找模板一次,通过多次旋转求取吸头的旋转中心。

使用halcon实现

public bool FitCircle(double[] X, double[] Y, out double RcX, out double RcY, out double R)
	    {
		    try
		    {
			    HTuple hTuple = new HTuple();
			    HTuple hTuple2 = new HTuple();
			    int num = 0;
			    for (num = 0; num < X.Length; num++)
			    {
				    if ((X[num] > 0.0) & (Y[num] > 0.0))//获得寻找到的模板中心装入hTuple2与hTuple
				    {
                        hTuple2.TupleConcat(X[num]);
                        hTuple.TupleConcat(Y[num]);
				    }
			    }
                HObject contour;
			    HOperatorSet.GenContourPolygonXld(out contour, hTuple, hTuple2);//使用模板中心生成多边形XLD轮廓
                HTuple row, column,radius,StartPhi,EndPhi,pointOrder;
                HOperatorSet.FitCircleContourXld(contour, "algebraic", -1, 0, 0, 3, 2, out  row, out  column, out  radius, out StartPhi, out EndPhi, out pointOrder);//拟合圆形
                //得出结果
			    RcY = row;
			    RcX = column;
			    R = radius;

                contour.Dispose();
			    return true;
		    }
		    catch
		    {
			    RcY = -1.0;
			    RcX = -1.0;
			    R = -1.0;
			    return false;
		    }
	    }

你可能感兴趣的:(#,Halcon图像处理实例)