* 在一个图片中获取 ROI 并在此图片中匹配
dev_close_window ()
dev_open_window (0, 0, 600, 600, 'black', WindowHandle)
* 窗口语句
read_image(Image,'L:/Halcon test/mk2.jpg')
*read_image(Image,'L:/Halcon test/mk3.jpg')
*read_image(Image,'L:/Halcon test/mk4.jpg')
* 这里有 4 张图片,每一张都说明一个小问题,附图分析。
gen_rectangle1 (ROI1, 57.8333, 49.5, 181.167, 342.833)
* 画一个矩形选择 ROI,矩形在左上角,覆盖一个完整的,无变形规定尺寸的商标,
作为模板。
reduce_domain(Image,ROI1,ImageReduced1)
* 大图和这个矩形的 ROI 相减就会得到一个左上角的商标的图案作为模板,命名
ImageReduced。
create_shape_model(ImageReduced1,0,0,rad(360),0,'no_pregeneration','use_pol
arity',40,10,ModelID1)
* 创建一个比例不变(1:1)的匹配的轮廓模型。具体参数下个帖子说明,也可见
[Halcon 算子学习交流区] Halcon 模版匹配算子解析 。
find_shape_model(Image,ModelID1,0,rad(360),0.7,13,0.5,'interpolation',0,0.9,Ro
w,Column,Angle,Score)
* 寻找与模板的大小尺寸必须是一比一匹配的,只是角度的不同而已,若大小发生
变化,则不能匹配
get_shape_model_contours(ModelContours1,ModelID1,1)
* 在大图中获取匹配。
for i := 0 to |Row|-1 by 1
vector_angle_to_rigid(0,0,0,Row【i】,Column【i】,Angle【i】,HomMat2D)
affine_trans_contour_xld(ModelContours2,ContoursAffinTrans,HomMat2D)
endfor
* 获取匹配。
disp_message (WindowHandle, '总共匹配了' + |Row| + '个商标', 'window', 12, 12,
'red', 'true')
* 输出数量统计。
clear_shape_model(ModelID1)
stop()
评论0