回复 6楼Twang的帖子
您好,
其实关键代码在这个搜索按钮里,我帮您添加了一些注释,帮助您来理解这个方法中都做了什么,这样便于您修改代码。
// 创建一个区域这个区域位置在:距离顶部5像素、距离左侧5像素,宽度35,高度35
LeadRect rc_cor = new LeadRect(0, 0, 35, 35);
CorrelationCommand cmd = new CorrelationCommand();
// 需要查找的图片
cmd.CorrelationImage = beforePic.Image;
// 将刚才建好的区域添加到查找的L型图片中
cmd.CorrelationImage.AddRectangleToRegion(null, rc_cor, RasterRegionCombineMode.Set);
// 创建一个查找结果数据(预估90个数量)
cmd.Points = new LeadPoint[90];
// 匹配度,0-100的数字,越大越精确,越小越模糊
cmd.Threshold = 90;
// 查找时X轴每次查找对比的像素个数
cmd.XStep = 2;
// 查找时Y轴每次查找对比的像素个数
cmd.YStep = 1;
// 在目标图片上查找L
cmd.Run(afterPic.Image);
for (int i_cor = 0; i_cor < cmd.NumberOfPoints; i_cor++)
{
// 将查找到的结果区域标示出来
}
以上就是查找核心代码了,
如您所说,如果您需要更改查找的内容,只需要更换查找图片就行了,例如将L字符图片换为T,然后按照T字大小修改这一句:
LeadRect rc_cor = new LeadRect(0, 0, 35, 35);
但我提示一下您,博客中的例子有缺陷,请您在循环后追加一句:afterPic.Refresh();
否则找到的区域不会刷新。
以上,谢谢。 |