halcon SelectShape按最小外接矩形的面积筛选
时间: 2023-10-09 13:12:13 浏览: 90
可以使用Halcon中的SelectShape函数按最小外接矩形的面积来筛选对象。具体的实现方法如下:
1. 首先,使用Halcon的gen_rectangle2函数生成对象的最小外接矩形,然后使用Halcon的area_center函数计算最小外接矩形的面积。
2. 然后,使用Halcon的SelectShape函数根据最小外接矩形的面积来筛选对象。具体代码如下:
```
* 定义最小外接矩形面积的范围
MinRectArea := 100
MaxRectArea := 1000
* 计算对象的最小外接矩形面积
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
area_center (Rectangle, RectArea, _, _)
* 选择符合条件的对象
SelectShape (Objects, SelectedObjects, 'rect2_area', 'and', MinRectArea, MaxRectArea)
```
其中,第一个参数Objects是待筛选的对象,第二个参数SelectedObjects是符合条件的对象,第三个参数'rect2_area'表示根据最小外接矩形的面积进行筛选,第四个参数'and'表示选择符合所有条件的对象,最后两个参数MinRectArea和MaxRectArea表示最小外接矩形面积的范围。
这样,就可以按最小外接矩形的面积来筛选对象了。
相关问题
halcon 最小外接矩形
在Halcon中,可以使用`gen_rectangle2`函数来计算给定二值图像的最小外接矩形。以下是一个示例代码:
```cpp
read_image(Image, 'binary_image.jpg')
threshold(Image, BinaryImage, 128, 255)
connection(BinaryImage, ConnectedRegions)
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 500, 99999) // 根据面积选择感兴趣的区域
smallest_rectangle2(SelectedRegions, Row, Column, Phi, Length1, Length2)
gen_rectangle2(Rectangle, Row, Column, Phi, Length1, Length2)
```
上述代码中,首先读取二值图像并进行阈值处理,然后使用`connection`函数将连通区域提取出来。接着使用`select_shape`函数根据感兴趣的区域面积进行筛选。
最后,使用`smallest_rectangle2`函数计算最小外接矩形的中心坐标(Row、Column)、旋转角度(Phi)、以及两条边的长度(Length1、Length2)。然后,通过`gen_rectangle2`函数生成最小外接矩形。
你可以根据实际需求对上述代码进行调整和修改。
halcon 查找矩形
### 使用 Halcon 查找图像中的矩形对象
为了实现这一目标,在 Halcon 中可以采用一系列操作来检测并提取图像内的矩形特征。具体而言,通过形态学运算、边缘检测以及形状分析等功能模块完成此任务。
#### 图像预处理
首先对输入图片实施必要的预处理措施以增强后续步骤的效果。这通常涉及灰度转换、噪声去除和平滑滤波等过程[^1]:
```cpp
read_image (Image, 'path_to_your_image')
mean_image (Image, ImageMean, 5, 5) % 平滑滤波减少噪音影响
threshold (ImageMean, Region, 128, 255) % 将图像二值化以便更容易找到轮廓
```
#### 边缘提取与闭合
接着利用 Sobel 或 Canny 方法获取物体边界信息,并尝试修复可能存在的断开部分使其形成封闭曲线:
```cpp
edges_sub_pix (Region, Edges, 'canny', 1, 20, 40)
connection (Edges, ConnectedComponents)
select_shape (ConnectedComponents, SelectedRegions, 'area', 'and', 100, 999999)
fill_up (SelectedRegions, FilledRegions)
```
#### 形状筛选及拟合
最后一步是从众多候选区域内挑选出最接近矩形结构的目标,并对其进行精确描述。这里会运用到 `smallest_rectangle1` 函数计算最小外接矩形参数;对于那些不完全连贯的边框,则可通过多边形逼近算法改善其几何特性:
```cpp
for i := 0 to |FilledRegions|-1 by 1
smallest_rectangle1(FilledRegions[i], Row1, Column1, Row2, Column2)
gen_rectangle1(Rectangle, Row1, Column1, Row2, Column2)
% 对于不符合标准矩形特性的区域执行额外优化
if not is_rectangle_closed(FilledRegions[i])
approximation_polygon(FilledRegions[i], PolygonApprox, 'ramer', 5)
gen_region_contour_xld(PolygonApprox, Contours)
fill_up(Contours, OptimizedRectangles[i])
endif
endfor
```
上述代码片段展示了如何借助 Halcon 工具箱内建函数逐步定位并表征存在于给定影像资料里的矩形单元。值得注意的是实际应用过程中还需考虑更多细节调整以适应不同场景下的需求变化。
阅读全文
相关推荐












