### ZV_SHAPECREATERE -- 用区域创建模板

类型 | 形状模板匹配
描述 | 使用模板图像img和指定模板图像的有效区域re创建形状匹配模板，主要针对于模板图像中噪点多时，通过re区域的方式指定模板图像中某些部分有效来创建模板，而不是使用整个模板图像来创建。通过区域re来指定模板图像中的有效区域来创建模板，可以通过对re区域进行一些集合运算或形态学运算来达到去除模板图像中噪声较多的那部分，从而得到鲁棒性更强的模板特征。创建大模板和小模板所占的内存通常都是不一样的，对于创建大模板通常会占用过多的系统内存从而导致系统异常，因此在创建模板前先指定创建模板的级别以保证应用的正常。如通过设置系统参数指令ZV_SETSYSINT("ShapeCreateLevel",4)设置创建模板级别为完全创建模板。详细请参考2.5.1小节参数说明中"ShapeCreateLevel"参数
语法 | ZV_SHAPECREATERE(img,re,model,angle_start,angle_end,scale_min, scale_max,thresh[,num_level=0,pt_reduce=0,angle_step=0,scale_step=0]) 参数： img：ZVOBJECT类型，制作模板的图像，输入参数，8U单通道 re：ZVOBJECT类型，指定模板图像的有效区域，在模板图像中 re 对应的部分将用来创建模板。re是基于行程编码的区域，其集合运算较为方便地去除无效部分保留有效部分来创建模板，通常对于噪点较多或轮廓特征不明显的模板图像，通过处理re来去除模板图像中弱特征保留强特征创建模板是很方便的 model：ZVOBJECT类型，制作的模板，输出参数 angle_start：角度匹配的起始值，由图像坐标系确定，范围(-180,180]，若超出范围会自动归一化到此范围 angle_end：角度匹配的终止值，范围(-180,180]，若超出范围会自动归一化到此范围。创建模板后，位于起始和终止角度范围内的目标均可被匹配 scale_min：匹配缩放最小比例，范围[0.5, 2.0] scale_max：匹配缩放最大比例，范围[0.5, 2.0]，大于等于scale_min，创建模板后，位于最小和最大缩放范围内的目标均可被匹配 thresh：提取边缘轮廓的对比度阈值，范围[0,255]，为0时内部会选取一个合适的阈值，对比度越大提取的边缘轮廓强度就越强，此参数可控制提取强边缘或弱边缘，阈值越小提取的弱边缘就越多，同时可能会带来一些噪声 num_level：金字塔层数，范围[0,无穷），层数越小匹配越耗时，为0或层数过大时会自动选取合适层数，建议为0 pt_reduce：优化减少模板点数量，如果设置在查找模板时贪婪度需设置低一些，0-不减少，1-轻微减少，2-减少适中，3-大量减少 angle_step：角度步长，范围[0,12]，步长越小精度越好但匹配越耗时，步长越大精度越差但匹配越不耗时，步长设的太小不合理或者为0时内部会自动选择一个合适的步长，建议为0。注意：由于角度需要过0，因此使用指令zv_match_shapeDefParams获取的角度步长与angleStep会有些差别 scale_step：缩放步长，[0,scaleMax - scaleMmn]，步长越小精度越好但匹配越耗时，步长越大精度越差但匹配越不耗时，步长设的太小不合理或者为0时内部会自动选择一个合适的步长，建议为0 注：创建模板时通常选取轮廓分明且具有唯一特性的目标作为模板，特征最好不要具有对称性。模板特征数据量大小通常与模板大小和模板参数有关，其数据量与模板大小、模板轮廓的复杂度、旋转角度范围、缩放范围成正比。模板越大使用的角度步长越小，在同等角度范围下特征数据量就越大，因此匹配时就越耗时。创建模板和匹配具有超时机制，默认的均是5000ms，当创建模板超时可以通过适当地调整模板参数减小模板特征数据量（如缩放范围调小点或使用轮廓点精简参数pt_reduce，此参数默认值为0即不精简轮廓点，精简的过于严重可能会影响匹配精度），或者是通过手动设置超时时间，如ZV_SETSYSDBL("ShapeCreateTimeout", 5000)，ZV_SETSYSDBL("ShapeFindTimeout", 5000)。创建模板也具有内存保护机制，当使用过大的模板图像创建具有缩放的模板时，占用的内存达到保护临界值时，此时报内存错误导致模板创建失败可以通过调整模板参数减少数据量，如使用pt_reduce参数精简一些点，或阈值thresh设大点只提取更为明显的轮廓特征
适用控制器 | 支持ZV功能或者5系列以上的控制器
例子 | 例一 re区域为空时 ZV_SETSYSINT("ShapeCreateLevel",4)'设置为完全创建模板特征 ZVOBJECT img ’模板图像 ZVOBJECT model’模板 ZVOBJECT re ’指定模板图像的有效区域，只声明不处理re时相当于re为空，即整个模板图像都有效，功能与ZV_SHAPECREATE相同 ZV_READIMAGE(img, "test.png", 0)'以原图像格式读取图片 ZV_SHAPECREATERE(img,re,model,angle_start,angle_end,scale_min,scale_max,thresh,num_level,pt_reduce,angle_step,scale_step) '创建模板 例二 re区域不为空时 ZV_SETSYSINT("ShapeCreateLevel",4)'设置为完全创建模板特征 ZVOBJECT img ’模板图像 ZVOBJECT model’模板 ZVOBJECT re ’指定模板图像的有效区域，需要生成re，即re对应的模板图像那部分用来创建模板 ZV_READIMAGE(img, "test.png", 0)'以原图像格式读取图片 ZV_REGENRECT(re,0,0,w,h) ‘在模板图像上指定一个用于创建模板的区域，w、h分别为模板图像的宽高 ZV_SHAPECREATERE(img,re,model,0,360,1,1,120,0,0,0,0) '创建模板
相关指令 | ZV_SHAPEFIND