dev_close_window ()
dev_update_off ()
read_image (Image, 'D:/h/3/Image/hh.png')
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
dev_set_draw ('margin')
dev_set_line_width (4)
dev_display (Image)
stop ()
*预处理
rgb1_to_gray (Image, GrayImage)
threshold (GrayImage, Regions, 0, 40)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 110902, 257519)
fill_up (SelectedRegions, RegionFillUp)
*摆正图像
orientation_region (RegionFillUp, Phi)
area_center (RegionFillUp, Area4, Row4, Column4)
smallest_rectangle2 (RegionFillUp, Row, Column, Phi, Length1, Length2)
gen_rectangle2_contour_xld (Rectangle, Row, Column, Phi, Length1, Length2)
vector_angle_to_rigid (Row, Column, Phi,Row, Column, 0, HomMat2D)
affine_trans_image (GrayImage, ImageAffineTrans, HomMat2D, 'constant', 'false')
affine_trans_region (RegionFillUp, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
dev_display (ImageAffineTrans)
dev_display (RegionAffineTrans)
stop ()
*生成检测区域
gen_empty_obj (EmptyObject)
for Index := 0 to 6 by 1
row:=331+Index*56
threshold (ImageAffineTrans, Regions1, 124, 213)
for Index1 := 0 to 6 by 1
column:=949+Index1*56
gen_circle (Circle, row, column, 26)
concat_obj (EmptyObject, Circle, EmptyObject)
endfor
endfor
stop ()
difference (RegionAffineTrans, EmptyObject, RegionDifference)
union1 (EmptyObject, RegionUnion)
orientation_region (RegionAffineTrans, Phi1)
Phi1 := rad(185) + Phi1
area_center (RegionAffineTrans, Area1, Row1, Column1)
* Image Acquisition 01: Code generated by Image Acquisition 01
list_files ('D:/h/3/hh', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1
read_image (Image1, ImageFiles[Index])
* Image Acquisition 01: Do something
rgb1_to_gray (Image1, GrayImage1)
threshold (GrayImage1, Regions2, 0, 40)
connection (Regions2, ConnectedRegions1)
select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 150902, 257519)
smallest_rectangle2 (SelectedRegions1, Row3, Column3, Phi2, Length11, Length21)
gen_rectangle2_contour_xld (Rectangle2, Row3, Column3, Phi2, Length11, Length21)
vector_angle_to_rigid (Row3, Column3, Phi2, Row1, Column1, 0, HomMat2D1)
affine_trans_image (Image1, ImageAffineTrans2, HomMat2D1, 'constant', 'false')
reduce_domain (ImageAffineTrans2, RegionUnion, ImageReduced)
decompose3 (ImageReduced, Image11, Image2, Image3)
threshold (Image2, Regions3, 150, 255)
connection (Regions3, ConnectedRegions2)
closing_circle (ConnectedRegions2, RegionClosing, 3.5)
fill_up (RegionClosing, RegionFillUp2)
select_shape (RegionFillUp2, SelectedRegions2, 'area', 'and', 100, 300)
count_obj (EmptyObject, Number)
gen_empty_obj (nnnnn)
for Index2 := 1 to Number by 1
select_obj (EmptyObject, ObjectSelected, Index2)
intersection (ObjectSelected, SelectedRegions2, RegionIntersection)
*求交集
area_center (RegionIntersection, Area3, Row2, Column3)
if (Area3>100)
else
concat_obj (nnnnn, ObjectSelected, nnnnn)
endif
endfor
dev_clear_window ()
dev_display (ImageAffineTrans2)
count_obj (nnnnn, Number2)
if (Number2>0)
disp_message (WindowHandle, '这个不得行NG', 'window', 60, 12, 'red', 'true')
else
disp_message (WindowHandle, '这个得行OK', 'window', 60, 12, 'forest green', 'true')
endif
Message := '好引脚: ' + (49 - Number2)
Message[1] := '坏引脚: ' + Number2
*
Colors := gen_tuple_const(3,'black')
if (Number2 > 0)
Colors[1] := 'red'
endif
disp_message (WindowHandle, Message, 'window', 12, 12, Colors, 'true')
dev_set_color ('red')
dev_display (nnnnn)
stop ()
endfor