VisionPro脚本 - 点到线距离测量

通过脚本实现CogDistancePointLineTool的功能

(引用命名空间在上篇文章有介绍,在此不赘述)

工具实例化

CogDistancePointLineTool distanceTool = new CogDistancePointLineTool();

输入参数:

image:

    Cognex.VisionPro.CogImage8Grey image = mToolBlock.Inputs["Image"].Value as Cognex.VisionPro.CogImage8Grey;
    distanceTool.InputImage = image;
 

line:

    Cognex.VisionPro.CogLine line = mToolBlock.Inputs["line_down"].Value as Cognex.VisionPro.CogLine;
    distanceTool.Line = line;
 

X/Y:

    Cognex.VisionPro.Caliper.CogFindLineResults points = mToolBlock.Inputs["points_up"].Value as Cognex.VisionPro.Caliper.CogFindLineResults;
    foreach(CogFindLineResult point in points)
    {
      if(point.Found && point.Used)
      {
        distanceTool.X = point.X;
        distanceTool.Y = point.Y;
        distanceTool.Run();     
      }        
    }
    

输出结果:

distanceTool.Distance ;//可用于输出,也可用于保存至结果数据中

double distance = distanceTool.Distance;

mToolBlock.Outputs["Output"].Value = distance;

var sx = distanceTool.SegmentX;  //可用于输出,也可用于绘制图像线段
 var sy = distanceTool.SegmentY;

    //计算点到线的平均距离
    int nNum = 0;
    double dDistanceSum = 0;
    double dDistanceAvg = 0;    
    
    StringBuilder sb = new StringBuilder();
    
    Cognex.VisionPro.Caliper.CogFindLineResults points = mToolBlock.Inputs["points_up"].Value as Cognex.VisionPro.Caliper.CogFindLineResults;
    Cognex.VisionPro.CogLine line = mToolBlock.Inputs["line_down"].Value as Cognex.VisionPro.CogLine;
    Cognex.VisionPro.CogImage8Grey image = mToolBlock.Inputs["Image"].Value as Cognex.VisionPro.CogImage8Grey;
    CogDistancePointLineTool distanceTool = new CogDistancePointLineTool();
    
    distanceTool.InputImage = image;
    distanceTool.Line = line;
    foreach(CogFindLineResult point in points)
    {
      if(point.Found && point.Used)
      {
        distanceTool.X = point.X;
        distanceTool.Y = point.Y;
        distanceTool.Run();
        nNum++;
        
        dDistanceSum +=distanceTool.Distance;
        
       // string strWriter = nNum.ToString() + "," + distanceTool.Distance.ToString();
       // sb.AppendLine(strWriter);
      }
        
    }
    
    dDistanceAvg = dDistanceSum / nNum;
   
 //   string strOut = "average" + "," + dDistanceAvg;
 //   sb.Append(strOut);
 //   SaveToFile(sb.ToString(), "D:\\tempPoint2Line.csv");
    
    mToolBlock.Outputs["Output"].Value = dDistanceAvg;

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值