Halcon模板匹配——保存与加载形状模板


需求

做模板匹配的过程中,需要保存当前的形状模板以便后续进行读取加载。

halcon 算子支持

1.保存形状模板

函数原型:

write_shape_model( ModelID, FileName : )

参数说明:
ModelID:模型的句柄
FileName :保存的文件名,形状模型的默认HALCON文件扩展名是’shm’。

2.读取形状模板

函数原型:

read_shape_model(FileName : ModelID)

参数说明:
FileName :要读取的文件名
ModelID : 形状模板的句柄

示例:

1.保存形状模板

*读取图像
read_image (ModelImage, 'rings_and_nuts')
get_image_pointer1 (ModelImage, Pointer, Type, Width, Height)

*做ROI
Row := 324
Column := 279
Radius := 60
gen_circle (ROI1, Row, Column, Radius)
reduce_domain (ModelImage, ROI1, ImageROI)

*创建形状模板
create_scaled_shape_model (ImageROI, 'auto', -rad(30), rad(60), 'auto', 0.6, 1.4, 'auto', 'none', 'use_polarity', 60, 10, ModelID)
inspect_shape_model (ImageROI, ShapeModelImage, ShapeModelRegion, 1, 30)


保存形状模板ModelFile := 'model.sbm'
write_shape_model (ModelID, ModelFile)
clear_shape_model (ModelID)

在这里插入图片描述

2.读取加载形状模板

*读取形状模板
read_shape_model (ModelFile, ReusedModelID)

*获取新装模板的轮廓,区域坐标等信息
get_shape_model_contours (ReusedShapeModel, ReusedModelID, 1)
get_shape_model_origin (ReusedModelID, ReusedRefPointRow, ReusedRefPointCol)
get_shape_model_params (ReusedModelID, NumLevels, AngleStart, AngleExtent, AngleStep, ScaleMin, ScaleMax, ScaleStep, Metric, MinContrast)

*读取新图像
read_image (SearchImage, 'rings_and_nuts')

*搜索匹配
find_scaled_shape_model (SearchImage, ReusedModelID, AngleStart, AngleExtent, ScaleMin, ScaleMax, 0.65, 0, 0, 'least_squares', 0, 0.8, RowCheck, ColumnCheck, AngleCheck, ScaleCheck, Score)

*对搜索到的形状轮廓做仿射变换
for i := 0 to |Score| - 1 by 1
    vector_angle_to_rigid (ReusedRefPointRow, ReusedRefPointCol, 0, RowCheck[i], ColumnCheck[i], AngleCheck[i], MovementOfObject)
    hom_mat2d_scale (MovementOfObject, ScaleCheck[i], ScaleCheck[i], RowCheck[i], ColumnCheck[i], MoveAndScalingOfObject)
    affine_trans_contour_xld (ReusedShapeModel, ModelAtNewPosition, MoveAndScalingOfObject)
    dev_display (ModelAtNewPosition)
endfor

在这里插入图片描述

  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值