select_shape_xld 怎么筛选角度为60到90 或者-60到-90的轮廓
时间: 2024-02-16 09:04:27 浏览: 157
您可以使用`select_shape_xld()`函数中的`select_contour()`参数来筛选角度符合要求的轮廓。具体来说,您可以使用以下代码:
```
select_shape_xld(InputContour, SelectedContours, 'contour', 'and', \
'angle', [60, 90], [rad(1), rad(1)], 'or', \
'angle', [-90, -60], [rad(1), rad(1)])
```
其中`InputContour`是输入的轮廓,`SelectedContours`是输出的筛选后的轮廓,`'contour'`表示筛选的对象是轮廓,`'and'`表示筛选条件为“与”的关系。接下来的`'angle'`表示要筛选的属性是轮廓的角度,`[60, 90]`表示角度在60度到90度之间,`[rad(1), rad(1)]`表示精度为1弧度。`'or'`表示筛选条件为“或”的关系,接下来的`'angle'`和条件表示要筛选角度在-90度到-60度之间的轮廓。
相关问题
segment_contours_xld (EmptyObject4, EmptyObject4, 'lines_ellipses', 5, 4, 2) select_shape_xld (EmptyObject4, Edges1, ['width','ratio'], 'and', [15,0], [55,0.3]) sort_contours_xld (Edges1, Edges1, 'upper_left', 'true', 'row') count_obj (Edges1, Number) select_obj (Edges1, ObjectSelected, 1) select_obj (Edges1, ObjectSelected3, Number) get_contour_xld (ObjectSelected, TopContourRows, TopContourRowsCols) get_contour_xld (ObjectSelected3, BottomContourRows, BottomContourCols)
segment_contours_xld (EmptyObject4, EmptyObject4, 'lines_ellipses', 5, 4, 2)函数是用来对轮廓进行分割,根据指定的类型'lines_ellipses',最小长度为5,最小弧长为4,最大间隔为2。
select_shape_xld (EmptyObject4, Edges1, ['width','ratio'], 'and', [15,0], [55,0.3])函数是根据轮廓的宽度和宽高比对轮廓进行选择,选择满足宽度在15到55之间且宽高比在0到0.3之间的轮廓。
sort_contours_xld (Edges1, Edges1, 'upper_left', 'true', 'row')函数是将轮廓按照从左上到右下的顺序进行排序。
count_obj (Edges1, Number)函数是计算轮廓的数量,并将结果保存在变量Number中。
select_obj (Edges1, ObjectSelected, 1)函数是选择第一个轮廓,并将其保存在变量ObjectSelected中。
select_obj (Edges1, ObjectSelected3, Number)函数是选择第Number个轮廓,并将其保存在变量ObjectSelected3中。
get_contour_xld (ObjectSelected, TopContourRows, TopContourRowsCols)函数是获取ObjectSelected轮廓的顶部轮廓行数和列数,并将结果保存在变量TopContourRows和TopContourRowsCols中。
get_contour_xld (ObjectSelected3, BottomContourRows, BottomContourCols)函数是获取ObjectSelected3轮廓的底部轮廓行数和列数,并将结果保存在变量BottomContourRows和BottomContourCols中。
halcon轮廓XLD减法
以下是使用Halcon进行轮廓XLD减法的示例代码:
```Halcon
read_image(Image, 'fabrik')
reduce_domain(Image, ImageReduced, Rectangle1)
threshold(ImageReduced, Region, 128, 255)
connection(Region, ConnectedRegions)
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', [1000, 100000])
gen_region_contour(SelectedRegions, Contours, 'border')
gen_rectangle1(Rectangle2, 100, 100, 200, 200)
difference(Contours, Rectangle2, ResultContours)
```
上述代码中,我们首先读取了一张名为'fabrik'的图像,然后使用reduce_domain函数将其缩小到一个矩形区域内。接着,我们使用threshold函数将图像二值化,并使用connection函数将连通区域提取出来。然后,我们使用select_shape函数选择面积在1000到100000之间的区域,并使用gen_region_contour函数生成这些区域的轮廓。接下来,我们使用gen_rectangle1函数生成一个矩形,并使用difference函数将轮廓减去这个矩形,得到最终的结果轮廓。
阅读全文