|
类型 |
形状模板匹配 |
|
描述 |
使用多个形状模板,在图像img上进行匹配查找,并输出模板轮廓点的匹配状态 |
|
语法 |
ZV_SHAPEFINDSST(modelList,param,img,matchs,stats[,numMatchs=0,minDis=0]) 参数: modelList:ZVOBJECT类型,形状模板列表 param:ZVOBJECT类型,匹配参数,矩阵类型,1行或者是n行;为1行时则所有模板共用该行的匹配参数,为n行时矩阵的行数必须要等于模板列表的长度,表示每行对应一个模板的匹配参数,每行的数据依次为min_score、nums、min_dist、min_thresh、accuracy、speed、polor,参数含义参考单模板匹配参数 img:ZVOBJECT类型,待匹配的搜索图像,8U单通道 matchs:ZVOBJECT类型,匹配结果,矩阵类型,输出参数,n行6列矩阵,每行一个匹配结果,每行的数据依次为score、x、y、angle、scale、modelId,其中modelId表示的是模板列表中对应id的模板匹配到的结果 stats:模板轮廓点每个点的匹配状态,nxm矩阵int型数据类型,每行一个模板轮廓,行上依次存储每个轮廓点的匹配状态,即对于某个轮廓点来说,匹配分数大于等于设置分数时为1(匹配成功),小于匹配分数时为0(匹配失败,为空时则不输出轮廓点匹配状态,不为空时则输出轮廓点匹配状态,此输出参数结合绘制模板指令zv_dra_shapeMatch可将匹配成功点和失败点绘制不同的颜色 numMatchs:总的最大匹配数量,范围[0,无穷),当numMatchs为0时使用param中的参数,以模板id升序(若id相同则分数降序)输出目标,当numMatchs大于零时以分数降序输出目标,numMatchs与真实目标大小关系参考单模板匹配 min_dist:匹配最小距离,表示两目标之间允许存在的最小距离。当minDist小于或等于0时使用param中的参数,针对模板对应的目标,含义参考单模板匹配,当minDist大于零时,针对所有匹配目标 |
|
适用控制器 |
支持ZV功能或者5系列以上的控制器 |
|
例子 |
ZV_SETSYSINT("ShapeCreateLevel",4)'设置为完全创建模板特征 ZVOBJECT img1, img2, img3, model, match_img, results, stats, color_img, model1, model2, model3, model_list, param, sub_results DIM rows ZV_READIMAGE(img1, "1.jpg", 0)'以原图像格式读取图片 ZV_READIMAGE(img2, "2.jpg", 0) ZV_READIMAGE(img3, "3.jpg", 0) ZV_SHAPECREATE(img1,model1,0,360,1,1,50,0,0,0,0) '创建模板 ZV_SHAPECREATE(img2,model2,0,360,1,1,90,0,0,0,0) ZV_SHAPECREATE(img3,model3,0,360,1,1,77,0,0,0,0) ZV_CLEAR(model_list)'清空model_list ZV_LISTINSERT(model1, model_list, -1)'将模板插入模板列表 ZV_LISTINSERT(model2, model_list, -1) ZV_LISTINSERT(model3, model_list, -1) ZV_MATGENCONST(param,3,7,0)'构造3行7列的矩阵,并设置匹配参数 TABLE(0,90,1,0,-1,3,9,0) ZV_MATSETROW(param,0,7,0) TABLE(0,90,1,0,-1,3,9,0) ZV_MATSETROW(param,1,7,0) TABLE(0,90,1,0,-1,3,9,0) ZV_MATSETROW(param,2,7,0) ZV_READIMAGE(match_img, "test.png", 0)'以原图像格式读取图片 ZV_SHAPEFINDSST(model_list,param,match_img,results,stats,0, 0)'多目标匹配 ZV_MATGETROW(results,0,6,0)'获取匹配结果矩阵的第一行 ZV_LISTGET(model_list,model,TABLE(5))'获取第一行结果矩阵对应的模板 rows = ZV_MATROWS(results)'获取结果矩阵的行数 ZV_MATGETSUB(results,sub_results,0,0,5,rows)'截取结果矩阵 ZV_GRAYTORGB(match_img,color_img)'灰度图转化为RGB图像 ZV_DRASHAPEMATCH(color_img,model,sub_results,stats,ZV_COLOR(0,255,0),ZV_COLOR(255,0,0))在彩色图像上绘制模板,并且匹配成功的轮廓点绘制绿色,匹配失败的轮廓点绘制红色 |
|
相关指令 |