Cognex 的 CogFitCircle 和 CogNPointToNPoint 类的简单测试

private void btn_Test_Click(object sender, RoutedEventArgs e)
{
    CogFitCircle cogFitCircle = new CogFitCircle();
    cogFitCircle.AddPoint(0, 10);
    cogFitCircle.AddPoint(10, 0);
    cogFitCircle.AddPoint(0, -10);
    cogFitCircle.AddPoint(-10, 0);

    CogFitCircleResult res = cogFitCircle.Execute("@");
    CogCircle cogCircle = res.GetCircle();
    MessageBox.Show($"cx = {cogCircle.CenterX:F3} cy = {cogCircle.CenterY:F3} r = {cogCircle.Radius}");

    CogNPointToNPoint cogNP = new CogNPointToNPoint();
    cogNP.AddPointPair(100, 100, 10, 10);
    cogNP.AddPointPair(150, 100, 15, 10);
    cogNP.AddPointPair(200, 100, 20, 10);
    cogNP.AddPointPair(200, 150, 20, 15);
    cogNP.AddPointPair(150, 150, 15, 15);
    cogNP.AddPointPair(100, 150, 10, 15);
    cogNP.AddPointPair(100, 200, 10, 20);
    cogNP.AddPointPair(150, 200, 15, 20);
    cogNP.AddPointPair(200, 200, 20, 20);

    ICogTransform2D trans = cogNP.ComputeGroupAFromGroupBTransform(out double rmsError);
    cogNP.ComputationMode = CogCalibFixComputationModeConstants.Linear;
    cogNP.DOFsToCompute = CogNPointToNPointDOFConstants.ScalingAspectRotationSkewAndTranslation;
    double or_x = 13, or_y = 14;
    trans.MapPoint(or_x, or_y, out double x, out double y);
    CogTransform2DLinear linear = trans as CogTransform2DLinear;
    double r = linear.MapAngle(Math.PI);
    MessageBox.Show($"or_x = {x:F3} or_y = {y:F3} r = {r:F3} RMSERROR = {rmsError}");
}

输出:

posted @   double64  阅读(111)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示