将OpenCvSharp.Point[][] pointsArray转换到 List<OpenCvSharp.Point> tempContour = new List<OpenCvSharp.Point>();
时间: 2024-01-22 19:17:41 浏览: 217
可以使用`SelectMany`方法将`pointsArray`中的所有点合并为一个`IEnumerable<OpenCvSharp.Point>`,然后再通过`ToList`方法转换为`List<OpenCvSharp.Point>`,示例代码如下:
```csharp
List<OpenCvSharp.Point> tempContour = pointsArray.SelectMany(points => points).ToList();
```
相关问题
将OpenCvSharp.Point[][] pointsArray加到 List<OpenCvSharp.Point> tempContour = new List<OpenCvSharp.Point>();
可以使用`SelectMany`方法将`pointsArray`数组中的所有元素合并成一个序列,然后将该序列转换为`List<OpenCvSharp.Point>`类型。具体代码如下:
```
List<OpenCvSharp.Point> tempContour = pointsArray.SelectMany(x => x).ToList();
```
错误 CS0029 无法将类型“OpenCvSharp.Point2f”隐式转换为“OpenCvSharp.Point2f[]” zeroPList = new List<Point2f>(); for (int i = 0; i < subPixelEdges.Rows; i++) { Point2f[] points = subPixelEdges.Get<Point2f>(i, 0); zeroPList.AddRange(points); }
这个编译错误提示是因为在以下代码中,Get方法返回的对象类型为 `OpenCvSharp.Point2f`,但是在 `Point2f[]` 中不能直接存放 `Point2f` 类型的对象,因此需要将其转换为 `Point2f[]` 类型:
```csharp
Point2f[] points = subPixelEdges.Get<Point2f>(i, 0);
```
可以将上述代码修改为以下形式,使用 `ToArray()` 方法将 `IEnumerable<Point2f>` 类型的对象转换为 `Point2f[]` 类型:
```csharp
Point2f[] points = {subPixelEdges.Get<Point2f>(i, 0)};
```
修改后的代码如下:
```csharp
zeroPList = new List<Point2f>();
for (int i = 0; i < subPixelEdges.Rows; i++)
{
Point2f[] points = {subPixelEdges.Get<Point2f>(i, 0)};
zeroPList.AddRange(points);
}
```
这样就可以避免编译错误了。
阅读全文