首页 > 分享 > 2D算法 Halcon 测量液体线高度

2D算法 Halcon 测量液体线高度

本案例通过测量矩形测量液位线的位置来判断液体是装多了还是装少了。(测量矩形使用形状模板匹配定位跟随测量)

整体思路:

以瓶底为模板进行模板匹配
设定标准液线,高液线,低液线(瓶内液体在该范围内判定合格)
将测量矩形移动到测量位置进行测量
显示
dev_get_window (WindowHandle)
set_display_font (WindowHandle, 15, ‘mono’, ‘true’, ‘false’)
read_image (Image, ‘ampoules/ampoules_01’)

创建模板
get_image_size (Image, Width, Height)
gen_rectangle1 (ModelRegion, 264, 54, 321, 100)
reduce_domain (Image, ModelRegion, TemplateImage)
create_shape_model (TemplateImage, 3, rad(-5), rad(10), ‘auto’, [‘none’,‘no_pregeneration’], ‘use_polarity’, [25,54,4], 4, ModelID)
get_shape_model_contours (ModelContours, ModelID, 1)
NumImages := 8
for Index := 1 to NumImages by 1
read_image (Image, ‘ampoules/ampoules_’ + Index$‘.2d’)
* 寻找实例
find_shape_model (Image, ModelID, rad(-5), rad(10), 0.7, 0, 0.5, ‘least_squares’, [3,1], 0.75, Row, Column, Angle, Score)
MeanRows:=mean(Row)
Length1:=52
Length2:=20
gen_measure_rectangle2 (0, 0, rad(90), Length1, Length2,Width, Height, ‘nearest_neighbor’, MeasureHandle)
* 设置两条参考线
MeasureRow:=MeanRows-180
standard:=120//标准液线
offset:=20//允许液线偏移量
RefLineHigh:=standard-offset//高液线
RefLineLow:=standard+offset//低液线
dev_set_color (‘cyan’)
dev_set_line_width (1)
set_line_style (WindowHandle, 10)
gen_contour_polygon_xld (ContourLineHigh, [RefLineHigh,RefLineHigh], [0,Width])
gen_contour_polygon_xld (ContourLineLow, [RefLineLow,RefLineLow], [0,Width])
gen_contour_polygon_xld (ContourStand, [standard,standard], [0,Width])
dev_display (Image)
dev_display (ContourStand)
dev_display (ContourLineHigh)
dev_display (ContourLineLow)
for I := 0 to |Score| - 1 by 1
* 将测量矩形移动到测量位置
dev_set_line_width (3)
set_line_style (WindowHandle, 0)
* 转换度量对象
translate_measure (MeasureHandle, MeasureRow, Column[I])
measure_pos (Image, MeasureHandle, 2.6, 7, ‘all’, ‘all’, RowEdge, ColumnEdge, Amplitude, Distance)
if(|RowEdge|>0)
if(RowEdge<RefLineHigh)
dev_set_color (‘red’)
gen_contour_polygon_xld (Contour, [RowEdge,RowEdge], [ColumnEdge-24,ColumnEdge+24])
dev_display (Contour)
disp_message (WindowHandle, ‘超出’+(RefLineHigh-RowEdge), ‘image’, RowEdge, ColumnEdge-30, ‘red’, ‘false’)
elseif(RowEdge>RefLineLow)
dev_set_color (‘red’)
gen_contour_polygon_xld (Contour, [RowEdge,RowEdge], [ColumnEdge-24,ColumnEdge+24])
dev_display (Contour)
disp_message (WindowHandle, ‘低出’+(RowEdge-RefLineLow), ‘image’, RowEdge, ColumnEdge-30, ‘red’, ‘false’)
else
dev_set_color (‘green’)
gen_contour_polygon_xld (Contour, [RowEdge,RowEdge], [ColumnEdge-24,ColumnEdge+24])
dev_display (Contour)
endif
endif
endfor
stop()
endfor

在这里插入图片描述
在这里插入图片描述

相关知识

小型2d线材成型机全自动平面弯线机园艺花盆架弯花成型设备
手写识别技术及其算法分类
2D植物树SU模型
前馈―反馈PID算法在水肥一体化控制系统中应用.doc
植物物联网
离子液体对CO2的吸收转换研究进展
一种简单测量土壤湿度和pH值(带温度补偿)的方法
无人机之姿态融合算法篇
js植物算法
土壤水分测量技术

网址: 2D算法 Halcon 测量液体线高度 https://m.huajiangbk.com/newsview893998.html

所属分类:花卉
上一篇: 白兰地怎么鉴定好酒?液体色差仪检
下一篇: 青岛加仑检测技术服务有限公司