形态模板的定义与查找是工业视觉里最基本的常用操作。下面勇哥提供一个例子。
下图是定义形态模板,并且显示模板轮廓。

换一张不同姿式的图片,查找模板,并显示模板轮廓、ROI、中心点。

dev_set_draw ('margin')
dev_set_color('green')
dev_close_window()
dev_open_window(0, 0, 512, 382, 'black', WindowHandle)
read_image (Image, 'C:/Users/Administrator/Desktop/新建文件夹/RobotAlign/RobotAlign/测试图片/11111111111111111111116.tif')
******创建模板
*手绘区域
draw_rectangle2(WindowHandle, Row, Column, Phi, Length1, Length2)
gen_rectangle2(Rectangle, Row, Column, Phi, Length1, Length2)
reduce_domain(Image, Rectangle, ImageReduced)
create_shape_model(ImageReduced, 'auto', -180, 360, 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
get_shape_model_contours(ModelContours, ModelID, 1)
area_center(Rectangle, Area, Row1, Column1)
hom_mat2d_identity(homMat2D)
hom_mat2d_translate(homMat2D, Row1,Column1, homMat2D)
affine_trans_contour_xld(ModelContours, ContoursAffinTrans, homMat2D)
dev_display(Rectangle)
dev_display(ContoursAffinTrans)
******换一张图片找模板
read_image (Image, 'C:/Users/Administrator/Desktop/新建文件夹/RobotAlign/RobotAlign/测试图片/11111111111111111111117.tif')
find_shape_model(Image, ModelID, rad(-180), rad(360), 0.5, 1, 0.5, 'least_squares', 0, 0.9, Row2, Column2, Angle, Score)
if(|Row2|>0)
for Index := 0 to |Row2|-1 by 1
*显示模板轮廓
hom_mat2d_identity(homMat2D)
hom_mat2d_translate(homMat2D, Row2[Index], Column2[Index], homMat2D)
hom_mat2d_rotate(homMat2D, Angle[Index], Row2[Index], Column2[Index], homMat2D)
get_shape_model_contours(countor, ModelID, 1)
affine_trans_contour_xld(countor, ContoursAffinTrans1, homMat2D)
dev_set_color('orange red')
dev_set_draw('margin')
dev_display(ContoursAffinTrans1)
*显示创建模板时的ROI
hom_mat2d_identity(homMat2D1)
area_center(Rectangle, Area1, Row3, Column3)
hom_mat2d_translate(homMat2D1, -Row3, -Column3, homMat2D1)
hom_mat2d_rotate(homMat2D1, Angle[Index], 0, 0, homMat2D1)
hom_mat2d_translate(homMat2D1, Row2[Index], Column2[Index], homMat2D1)
affine_trans_region(Rectangle, RegionAffineTrans, homMat2D1, 'false')
dev_set_color('blue')
dev_display(RegionAffineTrans)
*显示中心十字
affine_trans_point_2d(homMat2D1, Row3, Column3, Row3, Column3)
gen_cross_contour_xld(Cross,Row3, Column3, 20, Angle)
dev_set_color('red')
dev_display(Cross)
endfor
endif下面是勇哥写的关于模板匹配的其它贴子,请各位参考:
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!
本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:



少有人走的路


















