Geometry Halcon-延伸与另一个区域相交的区域

Geometry Halcon-延伸与另一个区域相交的区域,geometry,region,halcon,Geometry,Region,Halcon,左图是我的起始位置:红色是一个区域,黑色是一个XLD矩形 正确的是我想要实现的。我需要区域与矩形接触的地方,区域被拉伸X像素。。我的方法是绘制一个宽度为“X”的矩形区域,然后将其合并为“union2()”,但我很难计算出矩形的Y坐标。更好的是,我可以找到交叉点,但我不知道如何确定它是交叉点的“开始”还是“结束”,因此它是矩形的顶部还是底部。。我认为第一个始终是开始,然后它们交替,但实际上,交点在同一像素处返回两个值 这里有一个演示代码 dev_close_window () dev_open_w

左图是我的起始位置:红色是一个区域,黑色是一个XLD矩形

正确的是我想要实现的。我需要区域与矩形接触的地方,区域被拉伸X像素。。我的方法是绘制一个宽度为“X”的矩形区域,然后将其合并为“union2()”,但我很难计算出矩形的Y坐标。更好的是,我可以找到交叉点,但我不知道如何确定它是交叉点的“开始”还是“结束”,因此它是矩形的顶部还是底部。。我认为第一个始终是开始,然后它们交替,但实际上,交点在同一像素处返回两个值

这里有一个演示代码

dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)

* Creation of a Region
gen_circle (Circle1, 150, 200, 100.5)
gen_circle (Circle2, 250, 150, 50.5)
gen_circle (Circle3, 350, 200, 100.5)
union2 (Circle1, Circle2, RegionUnion1)
union2 (Circle3, RegionUnion1, Region)

* Creation of a xld
gen_rectangle2_contour_xld (Rectangle_xld, 250, 210, 0, 100.5, 205.5)

* Convert xld to region
gen_region_contour_xld (Rectangle_xld, Rectangle_region, 'margin')

* intersection
intersection (Region, Rectangle_region, RegionIntersection)

* stretch RegionIntersection
Stretch := 30
area_center (RegionIntersection, AreaRegionIntersection, RowRegionIntersection, ColumnRegionIntersection)

hom_mat2d_identity (HomMat2DIdentity)
hom_mat2d_scale (HomMat2DIdentity, 1, -Stretch, RowRegionIntersection, ColumnRegionIntersection, HomMat2DScale)
affine_trans_region (RegionIntersection, RegionIntersectionStretched, HomMat2DScale, 'nearest_neighbor')

union2 (Region, RegionIntersectionStretched, FinalRegion)
输入

输出