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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44901043/article/details/123605436