工控编程吧

标题: halcon merge_cont_line_scan_xld函数介绍 [打印本页]

作者: qq263946146    时间: 2019-5-21 19:25
标题: halcon merge_cont_line_scan_xld函数介绍
merge_cont_line_scan_xld(CurrConts, PrevConts : CurrMergedConts, PrevMergedConts : ImageHeight, Margin, MergeBorder, MaxImagesCont : )
操作符merge_cont_line_scan_xld将从相邻高度为ImageHeigh的图像中提取的XLD轮廓连接起来。
该操作符特别用于连接线扫描相机捕捉的图像中提取的轮廓。
CurrConts包含当前图像的轮廓,PrevConts包含 前一个图像的轮廓。


MergeBorder参数可以用于区域下面两种情况:
如果当前图像的顶部(第一行)与前一图像的底部(最后一行)接触,
则 MergeBorder 必须设置为“top”,
否则 MergeBorder 设置为“bottom”。
MergeBorder定义边界的边距。
在接下来的合并过程中,只考虑轮廓线中位于此边距内的端点。


如果递归使用merge_cont_line_scan_xld,
则参数MaxImagesCont确定合并轮廓所覆盖的图像的最大数量。
删除旧图像中合并轮廓的所有点。


merge_cont_line_scan_xld返回两个轮廓数组。
PrevMergedConts包含所有不与当前轮廓合并的PrevConts 中的轮廓。
CurrMergedConts将所有当前轮廓和之前图像中合并的部分合并在一起。
合并后的轮廓将超过原始图像,
因为之前的轮廓会根据图像的高度向上移动(合并边界='top')或向下移动(合并边界='bottom')。


例程可参考函数merge_regions_line_scan对应的实例
也可执行下面例程,简单查看效果
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, 'false', 'clips/clips.seq', 'default', -1, -1, AcqHandle)
grab_image (Image, AcqHandle)
get_image_size (Image, Width, Height)
MaxImageRegions := 4
gen_image_const (Image1, 'byte', Width, Height*MaxImageRegions)
gen_empty_obj (PreContour)
ClipProcessedSofar :=0
dev_close_window ()
dev_open_window (0, 0, Width/2, Height*(MaxImageRegions+1)/2, 'black', WindowHandle)
while(true)
    *让当前采集图像显示于窗口底部
    dev_set_part (-Height*MaxImageRegions, 0, Height-1, Width-1)
    grab_image (Image2, AcqHandle)
    threshold (Image2, Region, 0, 80)
    gen_contour_region_xld (Region, CurContours, 'border')
    merge_cont_line_scan_xld (CurContours, PreContour, CurrMergedConts, PrevMergedConts, Height, 0, 'top', MaxImageRegions)
    copy_obj (CurrMergedConts, PreContour, 1, -1)
endwhile

[halcon]1[/halcon]










欢迎光临 工控编程吧 (https://www.gkbc8.com/) Powered by Discuz! X3.4