Halcon基于形状模板匹配 < inspect_shape_model>

*----------------------------------------------------------------------------------------------------------------------
*基于形状模板匹配
*----------------------------------------------------------------------------------------------------------------------
*1】读取文件中的数据
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, 'false', 'C:/Users/Public/Documents/MVTec/HALCON-19.11-Progress/examples/images/board/board.seq', '', 1, 2, AcqHandle)
grab_image (Image, AcqHandle)
get_image_pointer1 (Image, Pointer, Type, Width, Height)
get_image_size (Image, Width1, Height1)

*2】窗体显示
rgb1_to_gray (Image, GrayImage)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'white', WindowHandle)
dev_set_part (0, 0, Height -1, Width-1)
dev_display (Image)
dev_set_color ('yellow')
dev_set_draw ('margin')
dev_set_line_width (2)

set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
disp_continue_message (WindowHandle, 'black', 'true')

*3】绘制ROI区域
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
gen_rectangle1 (ROI, Row1, Column1, Row2, Column2)
dev_display (ROI)

*4】抠图
reduce_domain (GrayImage, ROI, ImageReduced)

*5】创建模板
*5.1 查看形状模板轮廓 塔等级8 对比度30 
inspect_shape_model (ImageReduced, ModelImages, ModelRegions, 8, 30)
dev_clear_window ()
dev_set_color ('blue')
dev_display (ModelRegions)
area_center (ModelRegions, Area, Row, Column)
count_obj (ModelRegions, Number)

for i := 1 to Number by 1
    if (Area[i-1]>=15)
        NumLeves:=i        
    endif
endfor
*5.2根据实际筛选选择的塔等级来创建形状模板
create_shape_model (ImageReduced, NumLeves, 0, rad(360), 'auto', 'none', 'use_polarity', 30, 10, ModelID)
get_shape_model_contours (ModelContours, ModelID, 1)

*6】查找模板
for i := 1 to 20 by 1
    grab_image (Image, AcqHandle)
    find_shape_model (Image, ModelID, 0, rad(360), 0.7, 1, 0.5, 'least_squares', 0, 0.7, Row3, Column3, Angle, Score)
    if (|Score|==1)
        dev_set_color ('yellow')
        vector_angle_to_rigid (0, 0, 0, Row3, Column3, Angle, HomMat2D)
        affine_trans_contour_xld (ModelContours, ContoursAffineTrans, HomMat2D)
        dev_display (Image)
        dev_display (ContoursAffineTrans)                
    endif
    if(i!=20)
        disp_continue_message (WindowHandle, 'black', 'true')
    endif
    stop ()
endfor
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值