halcon获取匹配轮廓的坐标
时间: 2023-10-29 13:06:03 浏览: 360
要获取匹配轮廓的坐标,可以使用Halcon中的gen_contour_region_xld函数将匹配结果转换为轮廓,并使用get_contour_xld和get_contour_global_xld函数获取轮廓的坐标信息。具体的代码示例如下:
```python
# 获取匹配轮廓的坐标
match_result = find_shape_model(image, model_image, 0, 0, 0.5, 1, 0.5, 'use_polarity')
contours = gen_contour_region_xld(match_result)
x, y = get_contour_global_xld(contours, 'centroid')
row, col = get_contour_xld(contours)
```
其中,find_shape_model函数用于进行模板匹配,返回匹配结果;gen_contour_region_xld函数将匹配结果转换为轮廓;get_contour_global_xld函数获取轮廓的中心点坐标;get_contour_xld函数获取轮廓的所有点坐标。
相关问题
halcon获取圆形
Halcon是一款强大的机器视觉库,用于图像处理、特征检测和识别等任务。要从图像中获取圆形,你可以使用其中的内置函数和工具。这里是一个基本的步骤:
1. **加载图像**:首先,你需要通过`hobj_load_image`函数加载图片到Halcon的对象中。
```cpp
int image_id = hobj_load_image("circle_image.png");
```
2. **选择模板**:准备一个圆形模板,比如一个预定义的圆形内核或手动绘制的圆,然后创建一个对应的Halcon对象。
```cpp
BlobElement circle_template;
circle_template.SetSize(HBLOB_CIRCLE(50)); // 创建半径为50像素的圆形
```
3. **寻找匹配**:使用`find_blobs`函数在图像上搜索相似的圆形,传入模板和一些参数,如最小面积和轮廓精度。
```cpp
ImageObject img_obj(image_id);
CircleArray circles;
bool result = find_blobs(img_obj, circle_template, circles, HTemplate_NORMED_CENTROID | HTemplate_SQUARE_SIZE);
```
4. **检查结果**:检查`result`是否为真,表示找到了匹配。如果找到,可以遍历`circles`数组,获取每个匹配的圆形的位置信息(中心点坐标和半径)。
```cpp
for (int i = 0; i < circles.Size(); ++i) {
Circle circle = circles[i];
printf("Circle %d: Center at (%d,%d), Radius: %.2f\n", i, circle.CenterX(), circle.CenterY(), circle.Radius());
}
```
用halcon 写一个3d 轮廓匹配算法
以下是一个简单的3D轮廓匹配算法示例,使用Halcon实现:
1. 读取模板和目标点云数据
```python
read_object_model_3d('template.ply', 'template', [], [], GenParamName, GenParamValue)
read_object_model_3d('target.ply', 'target', [], [], GenParamName, GenParamValue)
```
2. 提取模板和目标点云的表面
```python
surface_normals_object_model_3d('template', 0.01, [], [], Normals)
surface_normals_object_model_3d('target', 0.01, [], [], Normals)
```
3. 对表面进行采样
```python
sample_object_model_3d('template', 'voxel', 0.1, [], [], SampledObjectModel)
sample_object_model_3d('target', 'voxel', 0.1, [], [], SampledObjectModel)
```
4. 提取模板和目标点云的特征
```python
features_object_model_3d('template', 'fpfh', [], [], Features)
features_object_model_3d('target', 'fpfh', [], [], Features)
```
5. 进行特征匹配
```python
match_feature_model_3d('target', 'fpfh', 'template', 'fpfh', [], [], [0.9], [Match], [Score])
```
6. 计算变换矩阵
```python
hom_mat3d_from_match_model_3d('template', 'target', 'fpfh', 'fpfh', Match, [], [], HomMat3D)
```
7. 通过变换矩阵将模板点云变换到目标点云坐标系中
```python
transform_object_model_3d('template', HomMat3D, [], [], TransformedObjectModel)
```
8. 评估匹配结果
```python
evaluate_feature_matching_result_model_3d('template', 'target', 'fpfh', 'fpfh', Match, [], [], [], [], EvaluatedResult)
```
阅读全文