流程图连接图效果图
细节部分
思路
此案例用的是复合颜色匹配工具CogCompositeColorMatchTool,用了脚本实现,功能更加强大,之前的两个方法只能显示一个颜色的数量,这个借用的脚本能实现多个颜色数量一起显示。
现在复合颜色匹配工具训练各个颜色数据,然后在脚本代码中,将PMA匹配到的每个保险丝位置信息传给复合颜色匹配工具,然后在代码中运行此工具,将匹配得到的颜色数量存储在一个变量中,最后再用AddGraphicToRunRecord进行显示。
复合颜色匹配工具CogCompositeColorMatchTool
为每个颜色进行训练
代码
//1.1 定义一个标签用于显示结果
CogGraphicLabel resultLabel = new CogGraphicLabel();//结果标签CogGraphicLabel
//2code
//2.1 首先获取PMA的运行结果 for foreach来获取多个结果 !!!!!注意后面是中括号
CogPMAlignTool pma =mToolBlock.Tools["CogPMAlignTool1"] as CogPMAlignTool ; //获取CogPMAlignTool1工具
//获取CogCompositeColorMatchTool工具
CogCompositeColorMatchTool match =mToolBlock.Tools["CogCompositeColorMatchTool1"] as CogCompositeColorMatchTool ;
//获取颜色匹配范围 region匹配范围 !!注意原本训练颜色匹配时,用的区域形状是什么就用什么
CogRectangleAffine region = match.Region as CogRectangleAffine;
int bluenum = 0;
int greennum = 0;
int orangenum = 0;
int rednum = 0;
int yellownum = 0;
//2.2针对每个结果运行一下复合颜色匹配工具
foreach (CogPMAlignResult item in pma.Results ) //item 指代PMA的每一个结果
{
//设置颜色匹配工具的匹配范围
region.CenterX = item.GetPose().TranslationX;
region.CenterY = item.GetPose().TranslationY;
region.Rotation = item.GetPose().Rotation;
//运行颜色匹配工具
mToolBlock.RunTool(match, ref message, ref result);//运行match颜色匹配工具,后两个参数不需要关注
//获取颜色匹配的最佳结果
string color = match.Result.ResultOfBestMatch.Color.Name;
switch(color)
{
case "blue":
bluenum++;
break;
case "green":
greennum++;
break;
case "orange":
orangenum++;
break;
case "red":
rednum++;
break;
case "yellow":
yellownum++;
break;
default:
break;
}
}
// 2.4显示
string res = String.Format("蓝色:{0} 绿色:{1} 橘色:{2} 红色:{3} 黄色:{4}",bluenum,greennum,orangenum,rednum,yellownum);
resultLabel.SetXYText(100, 10, res);
resultLabel.Color = CogColorConstants.Red;
resultLabel.Font = new Font("楷体", 12);
resultLabel.Alignment = CogGraphicLabelAlignmentConstants.TopLeft;//设置为左上对齐方式
//3code 显示到窗口
mToolBlock.AddGraphicToRunRecord(resultLabel, lastRecord, "CogImageConvertTool1.InputImage", "");