ZV_SHAPEFINDSST -- 多模板匹配

类型

形状模板匹配

描述

使用多个形状模板,在图像img上进行匹配查找,并输出模板轮廓点的匹配状态

语法

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

参数:

modelListZVOBJECT类型,形状模板列表

paramZVOBJECT类型,匹配参数,矩阵类型,1行或者是n行;为1行时则所有模板共用该行的匹配参数,为n行时矩阵的行数必须要等于模板列表的长度,表示每行对应一个模板的匹配参数,每行的数据依次为min_scorenumsmin_distmin_threshaccuracyspeedpolor,参数含义参考单模板匹配参数

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

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

stats:模板轮廓点每个点的匹配状态,nxm矩阵int型数据类型,每行一个模板轮廓,行上依次存储每个轮廓点的匹配状态,即对于某个轮廓点来说,匹配分数大于等于设置分数时为1(匹配成功),小于匹配分数时为0(匹配失败,为空时则不输出轮廓点匹配状态,不为空时则输出轮廓点匹配状态,此输出参数结合绘制模板指令zv_dra_shapeMatch可将匹配成功点和失败点绘制不同的颜色

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, 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)'构造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_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))在彩色图像上绘制模板,并且匹配成功的轮廓点绘制绿色,匹配失败的轮廓点绘制红色

相关指令

ZV_SHAPECREATEZV_SHAPECREATERE