ZV_SHAPEFIND -- 匹配

类型

形状模板匹配

描述

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

语法

ZV_SHAPEFIND(model,img,matchs,min_score[,nums=0,min_dist=0,min_thresh=-1,accuracy=3,speed=9,polar=0])

参数:

modelZVOBJECT类型,形状模板

imgZVOBJECT类型,待匹配的搜索图像,不能和模板图片1:1等比大小,8U单通道

matchsZVOBJECT类型,匹配结果,矩阵类型,n5列,每行一个匹配目标,列依次为匹配分数scorex坐标、y坐标、旋转角度angle、缩放比例scale

min_score:最小匹配分值,(0,100],分值越高匹配的目标越准确,越低容易将非目标当成目标

nums:最大匹配数量,[0, 无穷),当num大于真实目标时,以目标分数从高到低输出所有目标;当num小于真实目标时,以目标分数从高到低输出num个目标;当num0时,以目标分数从高到低输出所有目标

min_dist:匹配最小距离,表示两目标之间允许存在的最小距离。当minDist小于等于0时内部将选择合适的距离,当minDist小于或等于两目标距离时两个目标将被匹配到,当minDist大于两目标距离时低分值目标,将被删除仅留下高分值目标被匹配到

min_thresh:目标轮廓的最低边缘阈值,minThresh小于零时将使用创建模板时的阈值

accuracy:匹配精度,0-像素精度,1-插值精度,2-最小二乘拟合精度,大于等于3-最小二乘拟合迭代精度

speed:匹配速度0-10,越大速度越快,但可能丢失目标,大于10时取10

polar:匹配极性

polar

极性

解释

0

正极性

匹配目标所有轮廓点的明暗变化与模板所有轮廓点的明暗变化一致

1

正负极性

即正极性和负极性均可,匹配目标所有轮廓点的明暗变化与模板所有轮廓点的明暗变化一致或者相反

2

任意极性

匹配目标部分轮廓点的明暗变化与部分模板轮廓点的明暗变化一致或者相反

适用控制器

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

例子

4

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

ZVOBJECT img,model,match_img,results,rigid_mat,model_contlist, dst_contlist

ZV_READIMAGE(img, "model.jpg", 0)'以原图像格式读取图片

ZV_SHAPECREATE(img,model,0,360,1,1,50,0,0,0,0)'创建模板

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

ZV_READIMAGE(match_img, "1.png", 0)'以原图像格式读取图片

ZV_SHAPEFIND(model,match_img,results,90,1,0,-1,3,9,0)'模板匹配

ZV_MATGETROW(results,0,5,0)'获取匹配结果矩阵的第一行,分别是:匹配分数scorex坐标、y坐标、旋转角度angle、缩放比例scale

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