Cv2.Circle(colorResult, new OpenCvSharp.Point(centroids.At<double>(i, 0), centroids.At<double>(i, 1)), 2, Scalar.Blue, -1);如何提取中心坐标
时间: 2024-09-23 16:08:58 浏览: 36
kmeans_matlab_K._kmeans聚类_needed2od_
在给定的OpenCVSharp代码片段中,`Cv2.Circle` 函数用于在彩色结果 `colorResult` 上画圆,圆心位置由 `(centroids.At<double>(i, 0), centroids.At<double>(i, 1))` 提供,这是对 `centroids` 向量中的第 `i` 个元素的访问,`centroids` 应该是一个包含两列数据(x坐标和y坐标的矩阵或数组),每一行代表一个点的坐标。
具体来说:
- `colorResult` 是一个图像矩阵,`circle` 将在这个图像上绘制圆形。
- `new OpenCvSharp.Point(centroids.At<double>(i, 0), centroids.At<double>(i, 1))` 定义了圆心的位置,这里的 `At<double>` 操作是从 `centroids` 中获取第 `i` 行的双精度浮点数(double)坐标值。
- 第一个参数是圆心点的颜色,这里是蓝色 (`Scalar.Blue`),这意味着圆将被填充为蓝色。
- `radius` 参数设为2,意味着圆的半径是2像素。
- `-1` 表示线型风格(lineType),在这里通常表示闭合的形状,即完整的圆形。
因此,为了提取中心坐标,你可以直接从 `centroids` 的第 `i` 行获取。例如,如果你想提取第 `j` 个点的坐标,代码会像这样:
```csharp
Point center = new Point(centroids.At<double>(j, 0), centroids.At<double>(j, 1));
```
这里 `center` 就是你想要的第 `j` 个点的坐标。
阅读全文