opencvsharp OutputArray转成opoin2f[]
时间: 2023-07-02 13:16:13 浏览: 117
可以通过以下代码将一个 `OutputArray` 转换为 `Point2f[]`:
```csharp
using OpenCvSharp;
// 假设 outputArray 是一个 OutputArray 类型的变量
Mat mat = outputArray.GetMat();
Point2f[] points = new Point2f[mat.Rows * mat.Cols];
int index = 0;
for (int i = 0; i < mat.Rows; i++)
{
for (int j = 0; j < mat.Cols; j++)
{
points[index++] = mat.At<Point2f>(i, j);
}
}
```
这个代码首先通过 `GetMat()` 函数获取 `OutputArray` 对应的矩阵 `Mat`,然后遍历矩阵中的每个元素,将其转换为 `Point2f` 类型并保存到 `points` 数组中。
相关问题
在OpenCvSharp中转换OutputArray成point2f
在OpenCvSharp中,我们可以使用OutputArray.GetPoint2f()方法将OutputArray转换为Point2f类型。这个方法会返回一个Point2f类型的对象,我们可以在后续的代码中进一步处理这个Point2f对象。
以下是一个示例代码:
```csharp
// 定义一个空的Point2f对象
Point2f[] dst;
// 将OutputArray转换为Point2f类型
OutputArray output = new OutputArray(dst);
Point2f[] points = output.GetPoint2f();
// 对Point2f对象进行处理
// ...
```
在这个示例代码中,我们首先定义了一个空的Point2f数组对象dst。然后,我们将dst作为参数传递给OutputArray的构造函数,创建了一个OutputArray对象output。接着,我们调用output.GetPoint2f()方法,将OutputArray对象转换为Point2f类型的对象points。最后,我们可以对points数组对象进行处理,如点集操作等操作。
需要注意的是,如果我们使用的是其他类型的OutputArray,如Point2i、Point3f等,可以使用相应的转换方法将其转换为对应的类型。
在OpenCvSharp中转换OutputArray成point2f但没有.GetPoint2f()方法,如何实现
在OpenCvSharp中,可以使用Mat类的GetArray()方法获取一个数组,然后再手动将其转换为Point2f数组。以下是示例代码:
```csharp
// 假设有一个名为outputArray的OutputArray对象
Mat mat = outputArray.GetMat();
float[] array = mat.GetArray<float>();
Point2f[] points = new Point2f[array.Length / 2];
for (int i = 0; i < array.Length; i += 2)
{
points[i / 2] = new Point2f(array[i], array[i + 1]);
}
```
这样就可以将OutputArray对象转换为Point2f数组了。