halcon芯片引脚焊点瑕疵检测blob

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

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值