查找是否有瓶盖

 

 

 

思路,通过ROI 模版匹配,然后向上移动坐标,绘制一个矩形,通过算出矩形的灰度强度从而得出是否有瓶盖

 

read_image (Image, '1')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (Image)

dev_set_draw ('margin')
**draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
gen_rectangle1 (Rectangle, 236, 23, 435, 196)
dev_set_draw ('margin')
reduce_domain (Image, Rectangle, ImageReduced)
create_shape_model (ImageReduced, 'auto', rad(0), rad(360), 'auto', \
'auto', 'use_polarity', 'auto', 'auto', ModelID)

get_shape_model_contours (ModelContours, ModelID, 1)
area_center (Rectangle, Area, Row, Column)
vector_angle_to_rigid (0, 0, 0, Row, Column, 0, HomMat2D)
affine_trans_contour_xld (ModelContours, ContoursAffineTrans, HomMat2D)

read_image (Image1, '1')
gen_rectangle1 (Rectangle2,236, 23, 435, 196)
reduce_domain (Image1, Rectangle2, ImageReduced1)

** 在ROI 中找
find_shape_model (ImageReduced1, ModelID, rad(0), rad(360), 0.5, 1, 0.5, \
'least_squares', 0, 0.9, Row1, Column1, Angle, Score)

tuple_length (Score, Length)
if(Length>0)
** 生成这个矩形向上移动,后面通过这个区域的灰色强度来判断是否有盖子
gen_rectangle2 (Rectangle2, Row1-256, Column1+50, Angle, 30, 20)
endif

for i := 0 to |Score|-1 by 1
vector_angle_to_rigid (0, 0, 0, Row1[i], Column1[i], Angle, HomMat2D1)
affine_trans_contour_xld (ModelContours, ContoursAffineTrans1, HomMat2D1)
*显示ROI区域
gen_rectangle2 (Rectangle1, Row1[i], Column1[i], Angle[i], 100, 100)
**计算图形的灰度值的平局值和 偏差
intensity (Rectangle2, Image1, Mean, Deviation)
** 设置文本光标位置
set_tposition (WindowHandle, 100, 100)
if(Mean<190)
dev_set_color ('green')
write_string (WindowHandle, 'OK'+Mean)
else
dev_set_color ('green')
write_string (WindowHandle, 'OK'+Mean)
endif
endfor

 

posted @ 2024-07-12 13:42  陌念  阅读(8)  评论(0)    收藏  举报