康耐视visionpro中cogpmaligntool匹配到多个结构后,如何获取每个结果的位置
时间: 2025-07-26 07:29:55 浏览: 13
<think>我们正在处理一个关于康耐视VisionPro中CogPMAlignTool的问题。用户想知道如何获取多个匹配结果的位置信息。
根据引用[2]和引用[3],CogPMAlignTool可以匹配多个结果,并且每个结果都有位置(坐标)和旋转角度。引用[2]提到:
-匹配到的数量:Result.Count-匹配到的区域的坐标:Result.[i].GetPose().TranslationX和Result.[i].GetPose().TranslationY-旋转角度:Result.[i].GetPose().Rotation引用[3]也提到了类似的信息,并说明了该工具可以找到特征的位置。因此,我们可以通过以下步骤获取每个匹配结果的位置:1.运行CogPMAlignTool,得到结果对象(CogPMAlignResults)。
2.通过结果对象的Count属性获取匹配到的数量。3.遍历每个结果(从0到Count-1),通过每个结果对象的GetPose()方法获取位姿(CogTransform2DLinear),然后从位姿中提取X、Y坐标和旋转角度。注意:旋转角度通常以弧度表示,但也可以根据需要进行转换。下面我们给出一个示例代码(C#):</think>### 康耐视 VisionPro CogPMAlignTool 多匹配结果位置获取方法
在 VisionPro 中使用 `CogPMAlignTool` 获取多个匹配结果的位置信息,需通过结果集合的 `GetPose()` 方法提取位姿数据。以下是详细步骤:
#### 操作流程
1. **配置工具参数**
- 在 `CogPMAlignTool` 的 `RunParams` 中设置 `MaxResults`(最大匹配数量)和 `AcceptThreshold`(相似度阈值)
- 选择算法:`PatMax`(精度优先)或 `PatQuick`(速度优先)[^3]
2. **执行匹配并获取结果**
```csharp
// 运行工具
cogPMAlignTool.Run();
// 获取结果集合
CogPMAlignResults results = cogPMAlignTool.Results;
// 遍历所有匹配结果
for (int i = 0; i < results.Count; i++)
{
// 提取位姿信息
CogTransform2DLinear pose = results[i].GetPose();
// 获取坐标和角度
double centerX = pose.TranslationX; // X坐标
double centerY = pose.TranslationY; // Y坐标
double rotation = pose.Rotation; // 旋转角度(弧度)
// 转换为角度制(可选)
double rotationDeg = rotation * 180 / Math.PI;
// 输出结果(示例)
Console.WriteLine($"结果 {i+1}: 中心坐标({centerX:F2}, {centerY:F2}), 旋转角度: {rotationDeg:F1}°");
}
```
#### 关键参数说明
| 属性 | 说明 |
|--------------------|----------------------------------------------------------------------|
| `results.Count` | 实际匹配到的数量(≤ MaxResults) |
| `GetPose()` | 返回 `CogTransform2DLinear` 对象,包含位置和旋转信息 [^2] |
| `TranslationX/Y` | **匹配图案中心点**在图像坐标系中的像素坐标 |
| `Rotation` | 匹配图案相对于模板的旋转弧度(逆时针为正方向) |
#### 注意事项
1. 坐标系基准点由训练时设定的 **原点位置** 决定(通过 `CogFixtureTool` 可调整)[^3]
2. 如需世界坐标系坐标,需通过 `CogCoordinateSystemTree` 进行坐标转换
3. 当匹配结果重叠时,使用 `RunParams.ZoneAngle` 和 `ZoneScale` 限制搜索范围
阅读全文
相关推荐



















