目的: 将图片中的 线条找出并显示
代码
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
要注意线条跟区域是不一样的,线条跟轮廓也是不一样的。