分享最近新学习的Halcon抓边代码(可用于定位,测量项目)

     先读取你先要抓取边缘的图片,然后绘制矩形区域,方向垂直于边缘,参数我都备注了。

read_image (Image, ‘D:/users/S200722103/桌面/57自动线U型胶缺陷检测/泡棉缺陷检测完成版本2021.2.18/泡棉缺陷检测完成版本2021.2.18/泡棉原图/0 (7).jpg’)

get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width/4, Height/4, ‘black’, WindowHandle)
dev_display (Image)
dev_set_draw (‘margin’)
dev_set_line_width (2)
dev_set_color (‘blue’)

stop ()
draw_rectangle2 (WindowHandle, Row, Column, Phi, Length1, Length2)
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
*smallest_rectangle2 (Rectangle, Row3, Column3, Phi1, Length11, Length21)
*测量矩形中线2 平行于边缘
hom_mat2d_identity (HomMat2DIdentity1)
hom_mat2d_rotate (HomMat2DIdentity1, Phi-rad(90), Row, Column, HomMat2DRotate1)
affine_trans_pixel (HomMat2DRotate1, Row, Column+Length2, RowTrans, ColTrans)
affine_trans_pixel (HomMat2DRotate1, Row, Column-Length2, RowTrans1, ColTrans1)

gen_region_line (RegionLines3, RowTrans, ColTrans, RowTrans1, ColTrans1)
dev_display (RegionLines3)
LinePara:=[RowTrans, ColTrans, RowTrans1, ColTrans1]
*测试
*边缘强度
MeasureThreshold:=60
创建卡尺句柄
create_metrology_model (MetrologyHandle)
设置被测图尺寸
set_metrology_model_image_size (MetrologyHandle, Width, Height)
添加直线模型,卡尺尺寸设定,边缘强度设定
add_metrology_object_generic (MetrologyHandle, ‘line’, LinePara, Length1, Length1/10, 1, MeasureThreshold, [], [], Index)
白到黑,黑到白设定
set_metrology_object_param (MetrologyHandle, ‘all’, ‘measure_transition’, ‘all’)
第一条边与最后一条边设定
set_metrology_object_param (MetrologyHandle, ‘all’, ‘measure_select’, ‘last’)
最小分数
set_metrology_object_param (MetrologyHandle, ‘all’, ‘min_score’, 0.7)
剔除距离异常点
set_metrology_object_param (MetrologyHandle, ‘all’, ‘distance_threshold’, 4)
卡尺测量间距
set_metrology_object_param (MetrologyHandle, ‘all’, ‘measure_distance’, Length1/15)
执行测量
apply_metrology_model (Image, MetrologyHandle)
获取测量Contours
get_metrology_object_measures (Contours, MetrologyHandle, ‘all’, ‘all’, Row2, Column2)
*dev_display (Contours)
获取测量数据
get_metrology_object_result (MetrologyHandle, ‘all’, ‘all’, ‘result_type’, ‘all_param’, Parameter)
获取测量直线
get_metrology_object_result_contour (Contour, MetrologyHandle, ‘all’, ‘all’, 1.5)
*获取直线的两个端点
smallest_rectangle1_xld (Contour, Row1, Column1, Row21, Column21)

angle_lx ( Row1, Column1, Row21, Column21, Angle)
andle:=deg(Angle)
*显示 交点
gen_cross_contour_xld (Cross, Row2, Column2, 3, Phi+rad(30))
dev_set_color (‘red’)
dev_display (Contour)


版权声明:本文为A_lucky_原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。