ZV_SHAPEFINDS -- 多模板匹配

类型

形状模板匹配

描述

使用多个形状模板,在图像img上进行匹配查找。

语法

ZV_SHAPEFINDS(modelList,param,img,matchs[,numMatchs=0,minDis=0])

参数:

modelListZVOBJECT类型,形状模板列表

param:匹配参数矩阵,行数为1或等于mods列表长度,列数为7列依次为:最小分数, 数量, 最小距离, 最低阈值, 精度, 速度, 极性,含义参考单模板匹配。行为1行时则所有模板共用该行的匹配参数,为 n 行时矩阵的行数必须要等于模板列表的长度,表示每行对应一个模板的匹配参数

imgZVOBJECT类型,待匹配的搜索图像,8U单通道

matchsZVOBJECT类型,匹配结果,矩阵类型,输出参数,n6列矩阵,每行一个匹配结果,每行的数据依次为scorexyanglescalemodelId,其中modelId表示的是模板列表中对应id的模板匹配到的结果

numMatchs:总的最大匹配数量,范围[0,无穷),当numMatchs0时使用param中的参数,以模板id升序(若id相同则分数降序)输出目标,当numMatchs大于零时以分数降序输出目标,numMatchs与真实目标大小关系参考单模板匹配

min_dist:匹配最小距离,表示两目标之间允许存在的最小距离。当minDist小于或等于0时使用param中的参数,针对模板对应的目标,含义参考单模板匹配,当minDist大于零时,针对所有匹配目标

适用控制器

支持ZV功能或者5系列以上的控制器

例子

12

ZV_SETSYSINT("ShapeCreateLevel",4)'设置为完全创建模板特征

ZVOBJECT img1,img2,img3,match_img,results,color_img,model1, model2,model3,model_list,param,rigid_mat,model_contlist,dst_contlist

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)'构造37列的矩阵,并设置匹配参数

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_SHAPEFINDS(model_list,param,match_img,results,0,0)'多目标匹配

ZV_LISTGET(model_list,model,TABLE(5))

ZV_SHAPECONTOURS(model, model_contlist, 0)'获取模板轮廓

ZV_GETRIGIDVECTOR(rigid_mat,0,0,0,TABLE(1),TABLE(2),TABLE(3))'计算刚性变换矩阵

ZV_CONTAFFINE(model_contlist, rigid_mat,dst_contlist)'轮廓仿射变换

ZV_GRAYTORGB(match_img,color_img)'灰度图转化为RGB图像

ZV_CONTLIST(color_img,dst_contlist,ZV_COLOR(0,255,0),0)'绘制轮廓

相关指令

ZV_SHAPECREATEZV_SHAPECREATERE