多针槽有无针

*设置Region'margin'边界显示模式
dev_set_draw('margin')
*读图
read_image (Image1386749f5a8754c8f4e7, '13_867_49f5a8754c8f4e7.png')
*将4通道图像分解成4帧单通道图像
decompose4(Image1386749f5a8754c8f4e7, Image1, Image2, Image3, Image4)
********获取针槽**************
*显示通道1的图像
dev_display(Image1)
*阈值
threshold(Image1, Region, 0, 180)
*填充针槽的孔洞
fill_up(Region, Region)
*使用闭运算修整针槽边界
closing_rectangle1(Region, Region, 5, 5)
*连通区域
connection(Region, ConnectedRegions)
*通过宽高特征选择针槽
select_shape(ConnectedRegions, Region, ['width','height'], 'and', [40,5], [80,15])
 

*在每一个针槽,通过判断是否有满足长度条件的白色物体来判断是否有针
*重要参数:针的最小长度
PinMinWidht:=10
*计算针槽数
count_obj(Region, Number)
*通过FOR循环检测每个针槽有针或无针
for i := 1to Number by 1
    *根据索引提取单个针槽Region
    select_obj(Region, ObjectSelected, i)
    *计算面积及中心坐标
    area_center (ObjectSelected, Area, Row, Column)
    *腐蚀
    erosion_rectangle1(ObjectSelected, RegionErosion, 5, 5)
    *剪切Region内的图像
    reduce_domain(Image1, RegionErosion, ImageReduced)
    *阈值提取针的区域
    threshold(ImageReduced, Region1, 65, 255)
    *连通区域
    connection(Region1, Region1)
    *根据宽度选择针的区域
    select_shape(Region1, Region1, 'width', 'and', PinMinWidht, 99999)
    *通过统计数量,判断是否检测到针
    count_obj(Region1, Number1)
    if(Number1>0)
        disp_message(3600, '有针', 'image', Row-10, Column-10, 'black', 'false')
    else
        disp_message(3600, '无针', 'image', Row-10, Column-10, 'black', 'false')
    endif

endfor

猜你喜欢

转载自blog.csdn.net/zxl2712028/article/details/81193818
今日推荐