D测量:
1D测量主要就是拉个框获取这个框中定义的高频范围的临界点,所测量的范围比较有限,基于两点之间的距离。
1D测量主要步骤有:1、自定义测量模型;2、创建测量句柄 ;3、开始测量;4、显示测量结果;5、清除测量句柄
例子:
halcon代码:
read_image (Image, 'D:/Halcon-WorkSpaces/Halcon-Demo/测量/卡尺测量/1D测量/Image/test1.png')
rgb1_to_gray (Image, GrayImage)
get_image_size (GrayImage, Width, Height)
*计算尺子与像素点大小的关系
dev_set_draw ('margin')
*选则测量区域
draw_rectangle2 (3600, Row, Column, Phi, Length1, Length2)
*显示测量区域
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
*创建侧脸句柄
gen_measure_rectangle2 (Row, Column, Phi, Length1, Length2, Width, Height, 'nearest_neighbor', MeasureHandle)
*开始测量
measure_pos (GrayImage, MeasureHandle, 1, 30, 'all', 'all', RowEdge, ColumnEdge, Amplitude, Distance)
*显示抓取的点
gen_cross_contour_xld (Cross, RowEdge, ColumnEdge, 20, 0.5)
*显示测量结果
set_display_font (3600, 50, 'mono', 'true', 'false')
disp_message (3600, '测量长度:'+Distance+' Pixle', 'window', 12, 12, 'green', 'false')
*清除测量句柄
close_measure (MeasureHandle)
测量结果:
2D测量:
2D测量又称之为几何测量,可根据几何模型对物体进行较为全面的测量。
2D测量的步骤有:1、创建测量句柄;2、设置图片相对大小到句柄;3、定义测量模型;4、将测量模型添加到句柄;5、开始测量;6、拟合被测模型;7、显示测量结果;8、清除测量句柄。
例子: 被测物:
read_image (Image, 'D:/Halcon-WorkSpaces/Halcon-Demo/测量/卡尺测量/2D测量/Image/test2.png')
rgb1_to_gray (Image, GrayImage)
*创建几何测量句柄
create_metrology_model (MetrologyHandle)
*设置句柄与图像的像素关系
get_image_size (Image, Width, Height)
set_metrology_model_image_size (MetrologyHandle, Width, Height)
*自定义椭圆模型
draw_ellipse (3600, Row, Column, Phi, Radius1, Radius2)
*添加椭圆模型
*卡边尺长
MeasureLength1:=30
*卡边尺宽
MeasureLength2:=5
add_metrology_object_ellipse_measure (MetrologyHandle, Row, Column, Phi, Radius1, Radius2, 30, 5, 1, 30, [], [], Index)
*显示卡边尺模型
get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)
*开始测量
apply_metrology_model (GrayImage, MetrologyHandle)
*显示提取到的轮廓线
get_metrology_object_result_contour (Contour, MetrologyHandle, 'all', 'all', 1.5)
*拟合,计算轮廓结果
fit_ellipse_contour_xld (Contour, 'fitzgibbon', -1, 0, 0, 200, 3, 2, Row1, Column1, Phi1, Radius1, Radius2, StartPhi, EndPhi, PointOrder)
*显示结果
*椭圆的中心点
gen_cross_contour_xld (Cross, Row1, Column1, Radius1*2, Phi1)
set_display_font (3600, 30, 'mono', 'true', 'false')
disp_message (3600, ['椭圆中心坐标:('+Row1+','+Column1+')','椭圆斜率:'+Phi1,'椭圆最大半长:'+Radius1,'椭圆最小半长:'+Radius2], 'window', 12, 112, 'green', 'false')
*清除句柄
clear_metrology_model (MetrologyHandle)
测量结果:
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !