使用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;
		    }
	    }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值