Coincidencia de plantillas Halcon - Guardar y cargar plantillas de formas


necesitar

En el proceso de coincidencia de plantillas, la plantilla de forma actual debe guardarse para su posterior lectura y carga.

soporte del operador halcón

1. Guarde la plantilla de forma

Prototipo de función:

write_shape_model( ModelID, FileName : )

Descripción del parámetro:
ModelID: el identificador del modelo
FileName: el nombre del archivo guardado, la extensión de archivo HALCON predeterminada del modelo de forma es 'shm'.

2. Lee la plantilla de forma

Prototipo de función:

read_shape_model(FileName : ModelID)

Descripción del parámetro:
FileName: el nombre del archivo que se leerá
ModelID: el controlador de la plantilla de forma

Ejemplo:

1. Guarde la plantilla de forma

*读取图像
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)

inserte la descripción de la imagen aquí

2. Lea la plantilla de forma cargada

*读取形状模板
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

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_44901043/article/details/123605436
Recomendado
Clasificación