merge_regions_line_scan(CurrRegions, PrevRegions : CurrMergedRegions, PrevMergedRegions : ImageHeight, MergeBorder, MaxImagesRegion : )
merge_regions_line_scan将相邻的区域连接起来,这些区域由相邻的图像用高度ImageHeight分割。
该操作符特别用于处理线扫描相机捕捉到的图像中提取的区域。
CurrRegions包含当前图像内的区域,PrevRegions 含前一个图像区域。
通过参数MergeBorder可以区分两种情况:
如果当前图像的顶部(第一行)与前一幅图像的底部(最后一行)接触,
则必须将MergeBorder设置为“top”,否则将MergeBorder设置为“bottom”。
如果递归地使用merge_regions_line_scan操作符,
参数MaxImagesRegion确定合并区域所覆盖的图像的最大数量。
删除所有较老的区域部分。
操作符merge_regions_line_scan返回两个区域数组。
PrevMergedRegions包含来自之前输入区域PrevRegions的所有区域,
这些区域不能与当前区域合并。
CurrMergedRegions包含所有当前区域及之前图像中合并的部分。
合并区域将超过原始图像,因为之前的区域根据图像的高度向上移动(MergeBorder='top')或向下移动(MergeBorder='bottom')。
为此,系统参数'clip_region'(参见set_system)将在内部设置为'false'。
例程通过循环用线扫相机拍照,将每4个图像合成一张图
dev_update_window ('off')
dev_set_color ('red')
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, 'default', 'clips/clips.seq', 'default', -1, -1, AcqHandle)
grab_image (Image, AcqHandle)
get_image_pointer1 (Image, Pointer, Type, ImageWidth, ImageHeight)
gen_image_const (TiledImage, 'byte', ImageWidth, ImageHeight * MaxImagesRegions)
gen_empty_region (PrevRegions)
MaxImagesRegions := 4
ClipsProcessedSofar := 0
dev_close_window ()
dev_open_window (0, 0, ImageWidth / 2, ImageHeight * (MaxImagesRegions + 1) / 2, 'gray', WindowHandle)
while (1)
grab_image (Image, AcqHandle)
threshold (Image, CurrRegions, 0, 80)
merge_regions_line_scan (CurrRegions, PrevRegions, CurrMergedRegions, PrevMergedRegions, ImageHeight, 'top', MaxImagesRegions)
copy_obj (CurrMergedRegions, PrevRegions, 1, -1)
dev_clear_window ()
dev_display (CurrMergedRegions)
stop()
endwhile
close_framegrabber (AcqHandle)
|