形态模板的定义与查找是工业视觉里最基本的常用操作。下面勇哥提供一个例子。
下图是定义形态模板,并且显示模板轮廓。
换一张不同姿式的图片,查找模板,并显示模板轮廓、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,转载请注明出处!讨论可扫码加群:


