使用metrology跟随检测两条直线,并求出两条线的交点

26 篇文章 9 订阅

这篇文章主要完成三个功能:

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.csdn.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

程序下载路径为:

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值