常用的网站建设技术包括,企业做产品网站费用大概是多少,做水果的网站有哪些,wordpress 用ip访问不了第十八篇 机器视觉案例 之 连接件测量 文章目录 第十八篇 机器视觉案例 之 连接件测量1.案例要求2.实现思路2.1 测量圆心到直线的距离2.2 测量圆心到直线起点的连线和直线的夹角 3.使用控件3.1 模板匹配工具 —— CogPMAlignTool3.2 定位工具 —— CogFixtureTool3.3 卡尺工具 …第十八篇 机器视觉案例 之 连接件测量 文章目录 第十八篇 机器视觉案例 之 连接件测量1.案例要求2.实现思路2.1 测量圆心到直线的距离2.2 测量圆心到直线起点的连线和直线的夹角 3.使用控件3.1 模板匹配工具 —— CogPMAlignTool3.2 定位工具 —— CogFixtureTool3.3 卡尺工具 —— CogCaliperTool3.4 画线工具 —— CogCreateLineTool3.5 找圆工具 —— CogFindCircleTool3.6 画线工具 —— CogCreateSegmentTool3.7 点到线距离工具 —— CogDistancePointLineTool3.8 线线夹角工具 —— CogAngleLineLineTool 4.代码逻辑5.实现效果6.知识点总结6.1 弧度角度之间的转换 1.案例要求 1.测量圆心到直线距离 2.测量圆心到直线起点的连线和直线的夹角 本案例还可以通过Halcon实现参考文章Halcon 机器视觉案例 之 连接件测量
2.实现思路
2.1 测量圆心到直线的距离 即点到线距离使用点线距离工具 CogDistancePointLineTool 需要获得一点坐标→圆心坐标→使用找圆工具CogFindCircleTool 找圆工具需要圆的大致位置→对连接件圆的部分进行模板匹配 需要获得一条直线→使用画线工具CogCreateLineTool 画线工具需要一个点连接件边上的点→使用卡尺工具CogCaliperTool 卡尺工具需要连接件边的位置→对连接件上侧边进行模板匹配CogPMAlignTool 每一张图片的连接件位置不固定→需要使用标定工具CogFixtureTool为图像设置坐标系 标定工具需要图像变化的角度→对整个连接件进行模板匹配
2.2 测量圆心到直线起点的连线和直线的夹角
线线夹角使用线线夹角测量工具CogAngleLineLineTool 需要两条线一条连接件上的线1一条圆心到线1起点的直线2线1在2.1已经画出只需找到线2使用创建线段工具CogCreateSegementTool
3.使用控件
3.1 模板匹配工具 —— CogPMAlignTool 1.对连接件整体进行模板匹配 2.对连接件圆形部分进行模板匹配 3.对连接件上边缘进行模板匹配
注对于CogPMAlignTool模板匹配工具的使用详解可以参考文章VisionPro 机器视觉控件篇 之 模板匹配工具 CogPMAlignTool
3.2 定位工具 —— CogFixtureTool
获得对整个模板匹配工具结果中的参数
3.3 卡尺工具 —— CogCaliperTool
使用标定后的图像和模板匹配的坐标点
3.4 画线工具 —— CogCreateLineTool 3.5 找圆工具 —— CogFindCircleTool 在添加终端中添加找圆工具的坐标输入 输入坐标修改调整参数
3.6 画线工具 —— CogCreateSegmentTool
输入圆心坐标和直线1起点坐标
3.7 点到线距离工具 —— CogDistancePointLineTool 3.8 线线夹角工具 —— CogAngleLineLineTool 4.代码逻辑
声明全局集合 private CogGraphicCollection gc new CogGraphicCollection();核心代码 CogDistancePointLineTool dpl mToolBlock.Tools[CogDistancePointLineTool1] as CogDistancePointLineTool;CogAngleLineLineTool agl mToolBlock.Tools[CogAngleLineLineTool1] as CogAngleLineLineTool;CogPMAlignTool pma mToolBlock.Tools[CogPMAlignTool3] as CogPMAlignTool;//声明控件double x_angle pma.Results[0].GetPose().TranslationX 200;double y_angle pma.Results[0].GetPose().TranslationY 50;double x_distance dpl.X;double y_distance dpl.Y-300;//获取坐标点并添加偏移量使得文本位置合适CogGraphicLabel label_angle new CogGraphicLabel();CogGraphicLabel label_distance new CogGraphicLabel();//创建labeldouble rad agl.Angle;double ang rad * (180 / Math.PI);//弧度转角度double distance dpl.Distance;//获得距离label_angle.SetXYText(x_angle,y_angle,角度为ang.ToString(F2));label_angle.Font new Font(楷体,20);label_angle.Color CogColorConstants.Magenta;label_distance.SetXYText(x_distance,y_distance,距离为distance.ToString(F2));label_distance.Font new Font(楷体,20);label_distance.Color CogColorConstants.Magenta;//为label赋值gc.Clear();gc.Add(label_angle);gc.Add(label_distance);输出到图像
foreach(ICogGraphic gc1 in gc){mToolBlock.AddGraphicToRunRecord(gc1,lastRecord,CogFixtureTool1.OutputImage,);}5.实现效果 6.知识点总结
6.1 弧度角度之间的转换
1.使用公式计算 角度 弧度 × (180/π)π在C#中用 Math.PI 表示double angle rad * (180 / Math.PI) 2.使用函数CogMisc.RadToDeg() 角度转弧度就是CogMisc.DegToRad()double angle CogMisc.RadToDeg(rad)