OpenCvSharp.Point[][] 转成 OpenCvSharp.Point[]
时间: 2023-09-09 18:08:12 浏览: 178
可以通过 LINQ 中的 `SelectMany` 方法将 `OpenCvSharp.Point[][]` 转换为 `OpenCvSharp.Point[]`。示例如下:
```csharp
using OpenCvSharp;
using System.Linq;
// 假设存在一个 Point[][] 变量 points
Point[] flattenedPoints = points.SelectMany(x => x).ToArray();
```
这里使用了 `SelectMany` 方法来将 `points` 数组中的每个子数组中的元素合并为一个新的数组。最后通过 `ToArray` 方法将合并后的结果转换为 `OpenCvSharp.Point[]` 数组类型。
相关问题
OpenCvSharp.Point2f”转换为“OpenCvSharp.Mat
OpenCvSharp中的`Point2f`是一个二维浮点数结构体,通常用于表示图像中的像素坐标。而`Mat`是OpenCV库的核心数据结构之一,它代表一个多维数组,可以用来存储各种类型的数据,包括像素。
将`Point2f`转换到`Mat`,通常是当你需要将一个点的信息插入到图像的矩阵中作为某个元素的位置索引。例如,如果你想创建一个新的`Mat`并在特定位置插入一个值,你可以这样做:
```csharp
using OpenCvSharp;
// 假设你有一个Point2f变量point
OpenCvSharp.Mat image = new Mat(500, 500, CvType.CV_8UC3); // 创建一个500x500的BGR图像
OpenCvSharp.Point2f pointCoordinates = ...; // 初始化点的坐标
// 将Point2f转换为Mat的行、列索引
int row = (int)pointCoordinates.Y;
int col = (int)pointCoordinates.X;
// 如果你想在该点设置一个特定的颜色(例如红色)
image.At<byte>(row, col) = (byte)(255); // BGR格式,红色通道全亮
```
将OpenCvSharp.Point[][] pointsArray转换到 List<OpenCvSharp.Point> tempContour = new List<OpenCvSharp.Point>();
可以使用`SelectMany`方法将`pointsArray`中的所有点合并为一个`IEnumerable<OpenCvSharp.Point>`,然后再通过`ToList`方法转换为`List<OpenCvSharp.Point>`,示例代码如下:
```csharp
List<OpenCvSharp.Point> tempContour = pointsArray.SelectMany(points => points).ToList();
```
阅读全文