机器视觉halcon学习——找出线条

目的: 将图片中的 线条找出并显示

效果图

放大看细节,是一根直的线条
机器视觉halcon学习——找出线条_第1张图片

代码

dev_close_window()
dev_open_window(0, 0, 800, 800, 'black', WindowHandle)
dev_set_draw('fill')
*文件夹,存放图片的
list_files('D:/找出白线',['files','follow_links'],ImageFiles)
*数组,.*表示该目录下的所有都算进去
tuple_regexp_select(ImageFiles,['.*','ignore_case'],ImageFiles)
*循环图片
for imgIndex:=0 to |ImageFiles| -1 by 1
    read_image(Image, ImageFiles[imgIndex])
    dev_set_color('blue')
    *分割选出白色区域
    threshold(Image, Region, 166, 255)
    connection(Region, ConnectedRegions)
    select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 3700, 7000)
    fill_up(SelectedRegions, RegionFillUp)
    *高斯计算直线
    calculate_lines_gauss_parameters(5, 60, Sigma, Low, High)
    lines_gauss(Image, Lines, 2, 1, 8, 'light', 'true', 'bar-shaped', 'true')
    *那个300就是直线的长度的最小值,最短300,其他的短线可以过滤
    select_contours_xld(Lines, SelectedLines, 'contour_length', 300, 20000, 0, 0)
    *获取选中的线条的坐标
    get_contour_xld(SelectedLines, Row, Col)
    *得到选中线条的始末位置坐标
    fit_line_contour_xld(SelectedLines, 'tukey', -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)
    *根据选中的线条的始末位置的坐标,将这根线连起来
    gen_contour_polygon_xld(Contour, [RowBegin,RowEnd], [ColBegin,ColEnd])
    dev_set_color('red')
    dev_display(Image)
    *显示这根线
    dev_display(Contour)
    stop()
endfor

要注意线条跟区域是不一样的,线条跟轮廓也是不一样的。

你可能感兴趣的:(halcon,学习)