使用metrology跟随检测两条直线,并求出两条线的交点
这篇文章主要完成三个功能:
1、检测直线
2、metrology跟随检测直线
3、求出两条直线的交点
参考范例为apply_metrology_model_diamond.hdev
效果如下图
程序代码如下:
read_image (Test, 'C:/Users/yue/Desktop/test.png')
rgb1_to_gray (Test, GrayImage)
dev_set_draw ('margin')
Row1:=151.354
Column1:=247.76
Row2:=199.833
Column2:=322.308
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
draw_line (200000, Row11, Column11, Row21, Column21)
draw_line (200000, Row12, Column12, Row22, Column22)
get_image_size (GrayImage, Width, Height)
create_metrology_model (MetrologyHandle)
set_metrology_model_image_size (MetrologyHandle, Width, Height)
add_metrology_object_line_measure (MetrologyHandle, [Row11,Row12], [Column11,Column12], [Row21,Row22], [Column21,Column22], 20, 5, 1, 30, [], [], Index)
get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)
*创建参考点,用于跟随的点,也可用模板,求出模板的中心点角度,用于跟随定位使用
reduce_domain (GrayImage, Rectangle, ImageReduced)
threshold (ImageReduced, Region, 0, 120)
get_region_points (Region, Rows, Columns)
set_metrology_model_param (MetrologyHandle, 'reference_system', [Rows[0],Columns[0],0])
dev_update_off ()
for i := 1 to 5 by 1
read_image (Test1, 'C:/Users/yue/Desktop/test'+i$'01'+'.png')
rgb1_to_gray (Test1, GrayImage1)
*求出图片中需要跟随的点,并用align_metrology_model进行跟随
reduce_domain (GrayImage1, Rectangle, ImageReduced1)
threshold (ImageReduced1, Region1, 0, 120)
get_region_points (Region1, Rows1, Columns1)
align_metrology_model (MetrologyHandle, Rows1[0], Columns1[0], 0)
apply_metrology_model (GrayImage1, MetrologyHandle)
get_metrology_object_measures (Contours1, MetrologyHandle, 'all', 'all', Row3, Column3)
get_metrology_object_result_contour (Contour, MetrologyHandle, 'all', 'all', 1.5)
dev_display (GrayImage1)
dev_display (Contour)
get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'all_param', Parameter)
*求出两条线的交点
intersection_lines (Parameter[0], Parameter[1], Parameter[2], Parameter[3], Parameter[4], Parameter[5], Parameter[6], Parameter[7], Row4, Column4, IsOverlapping)
gen_cross_contour_xld (Cross, Row4, Column4, 6, 0.785398)
dev_display (Cross)
stop()
endfor
程序完整代码以及图片路径为:https://download.****.net/download/yue1453544229/11175136
升级版 ,跟随一个模板进行测量
效果如下图
read_image (Image1, '1.png')
rgb1_to_gray (Image1, GrayImage)
*创建跟随模板
dev_set_draw ('margin')
Row1:=104.793
Column1:=34.971
Row2:=175.739
Column2:=112.891
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
reduce_domain (GrayImage, Rectangle, ImageReduced)
dev_display (ImageReduced)
create_ncc_model (ImageReduced, 'auto', -0.39, 0.79, 'auto', 'use_polarity', ModelID)
find_ncc_model (GrayImage, ModelID, -0.39, 0.79, 0.8, 1, 0.5, 'true', 0, Row, Column, Angle, Score)
*获取参考点
RowRef:=Row
ColumnRef:=Column
draw_line (200000, Row11, Column11, Row21, Column21)
draw_line (200000, Row12, Column12, Row22, Column22)
create_metrology_model (MetrologyHandle)
add_metrology_object_line_measure (MetrologyHandle, [Row11,Row12], [Column11,Column12], [Row21,Row22], [Column21,Column22], 20, 5, 1, 30, [], [], Index)
get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row3, Column3)
set_metrology_model_param (MetrologyHandle, 'reference_system', [RowRef,ColumnRef,0])
for i := 1 to 7 by 1
read_image (Image, i$'01'+'.png')
rgb1_to_gray (Image, GrayImage1)
find_ncc_model (GrayImage1, ModelID, Angle, Angle, 0.8, 1, 0.5, 'true', 0, Row4, Column4, Angle1, Score1)
*捕捉到参考点,并使测量模型跟随
align_metrology_model (MetrologyHandle, Row4, Column4, Angle1)
apply_metrology_model (GrayImage1, MetrologyHandle)
get_metrology_object_measures (Contours1, MetrologyHandle, 'all', 'all', Row5, Column5)
get_metrology_object_result_contour (Contour, MetrologyHandle, 'all', 'all', 1.5)
get_metrology_object_result (MetrologyHandle, 'all', 'all', 'result_type', 'all_param', Parameter)
intersection_lines (Parameter[0], Parameter[1], Parameter[2], Parameter[3], Parameter[4], Parameter[5], Parameter[6], Parameter[7], Row6, Column6, IsOverlapping)
gen_cross_contour_xld (Cross, Row6, Column6, 10, Angle1)
stop()
endfor
程序下载路径为: