下面奉上源码:(可以直接复制直接运行)
read_image (Image, 'printer_chip/printer_chip_01')
dev_get_window (WindowHandle)
dev_set_draw ('margin')
get_image_size (Image, Width, Height)
*创建模板
draw_rectangle2 (WindowHandle, ModelRow, ModelColumn, ModelPhi, ModelLength1, ModelLength2)
gen_rectangle2 (Rectangle, ModelRow, ModelColumn, ModelPhi, ModelLength1, ModelLength2)
reduce_domain (Image, Rectangle, ImageReduced)
create_shape_model (ImageReduced, 'auto', rad(0), rad(360), 'auto', 'auto', 'use_polarity', 'auto', 'auto', ModelID)
*创建ROI
draw_rectangle2 (WindowHandle, RoiRow1, RoiColumn1, RoiPhi1, RoiLength1, RoiLength2)
*提取ROI的中轴线
hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_rotate (HomMat2DIdentity, RoiPhi1, RoiRow1, RoiColumn1, HomMat2DRotate)
affine_trans_pixel (HomMat2DRotate, [RoiRow1+RoiLength2,RoiRow1-RoiLength2], [RoiColumn1,RoiColumn1], RowTrans, ColTrans)
*调整图像的位置和角度验证
hom_mat2d_identity (HomMat2DIdentity1)
hom_mat2d_translate (HomMat2DIdentity1, 64, 64, HomMat2DTranslate)
affine_trans_image (Image, Image, HomMat2DTranslate, 'constant', 'false')
rotate_image (Image, Image, -10, 'constant')
get_image_size (Image, Width, Height)
*模板查找
find_shape_model (Image, ModelID, rad(0), rad(360), 0.5, 1, 0.5, 'least_squares', 0, 0.9, FindRow, FindColumn, FindAngle, Score)
get_shape_model_contours (ModelContours, ModelID, 1)
*ROI 根据模板搜索 计算跟随坐标
hom_mat2d_identity (HomMat2DIdentity2)
hom_mat2d_rotate (HomMat2DIdentity2, FindAngle, FindRow, FindColumn, HomMat2DRotate1)
*RoiRow1+FindRow-ModelRow, RoiColumn1+FindColumn-ModelColumn 计算ROI到实时图像要平移的距离(ROI的坐标+(实时坐标-模板坐标))
affine_trans_pixel (HomMat2DRotate1, RoiRow1+FindRow-ModelRow, RoiColumn1+FindColumn-ModelColumn, RowTrans1, ColTrans1)
*ROI跟随
gen_rectangle2_contour_xld (Rectangle1, RowTrans1, ColTrans1, FindAngle, RoiLength1, RoiLength2)
*创建测量模型
create_metrology_model (MetrologyHandle)
*设置测量对象的图像大小
set_metrology_model_image_size (MetrologyHandle, Width, Height)
*设置测量参数
paramName:=['measure_transition','measure_select','num_measures','min_score']
paramValue:=['positive','first',10,0.5]
*创建测量模型ROI
add_metrology_object_line_measure (MetrologyHandle, RowTrans[0], ColTrans[0], RowTrans[1], ColTrans[1], RoiLength1, 1, 1, 30, paramName, paramValue, Index)
*修改模型参数
*set_metrology_model_param()
*set_metrology_model_param( : : MetrologyHandle, GenParamName, GenParamValue : )
*函数说明: 设置测量模型的参数。
*函数参数:
*MeasureHandle:输入测量模型的句柄;
*GenParamName:输入参数名称;参考: ‘camera_param’,输入相机参数由GenParamName= 'camera_param’指定,CameraParam是相机;
*‘plane_pose’(是否相机三维姿态);
*‘reference_system’(根据图像坐标系的平移(行、列)和旋转角度(角度),定义一种新的参考系统);
*‘scale’(期望单位与原始单位的比率);
*GenParamValue:输入参数值;参考:1.0, 0.1, ‘m’, ‘cm’, ‘mm’, ‘microns’, ‘um’;
set_metrology_model_param (MetrologyHandle, 'reference_system', [ModelRow, ModelColumn,0])
*模板匹配对齐
*align_metrology_model( : : MetrologyHandle, Row, Column, Angle : )
*函数说明: 测量模型的对齐/校准。
*函数参数:
*MeasureHandle:输入测量模型的句柄;
*Row:对齐测量模型的列坐标;
*Column:对齐测量模型的列坐标:
*Angle:对齐测量模型的旋转角度。
align_metrology_model (MetrologyHandle, FindRow, FindColumn, FindAngle)
*应用测量
apply_metrology_model (Image, MetrologyHandle)
*获取测量结果
get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'all_param', Parameter)
get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row3, Column3)
get_metrology_object_result_contour (Contour, MetrologyHandle, 0, 'all', 1.5)
*清除/销毁测量对象
clear_metrology_model (MetrologyHandle)
dev_set_color ('green')
gen_cross_contour_xld (Cross, Row3, Column3, 16, 45)
(原图)
(结果)
*(红色字体为注解)