错误 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); }
时间: 2024-01-24 07:05:05 浏览: 28
这个编译错误提示是因为在以下代码中,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);
}
```
这样就可以避免编译错误了。
相关问题
严重性 代码 说明 项目 文件 行 禁止显示状态 错误 CS0029 无法将类型“OpenCvSharp.Point2f”隐式转换为“OpenCvSharp.Point2f[]”
这个编译错误提示是因为在以下代码中,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).ToArray();
```
修改后的代码如下:
```csharp
zeroPList = new List<Point2f>();
for (int i = 0; i < subPixelEdges.Rows; i++)
{
Point2f[] points = subPixelEdges.Get<Point2f>(i, 0).ToArray();
zeroPList.AddRange(points);
}
```
这样就可以避免编译错误了。
CS0029 无法将类型“UnityEngine.Vector2”隐式转换为“int”如何解决
这个问题是因为你试图将一个 Vector2 类型的变量隐式转换为 int 类型的变量,而这两个类型是不兼容的。要解决这个问题,你需要将 Vector2 类型的变量转换为 int 类型的变量。
方法一:使用类型转换
你可以使用类型转换将 Vector2 类型的变量转换为 int 类型。例如:
```csharp
Vector2 vector = new Vector2(1, 2);
int x = (int)vector.x;
int y = (int)vector.y;
```
这样就可以将 Vector2 类型的变量转换为 int 类型的变量了。
方法二:使用 Vector2 的属性
如果你只需要 Vector2 变量的 x 或 y 值,你可以使用 Vector2 的属性来获取它们。例如:
```csharp
Vector2 vector = new Vector2(1, 2);
int x = vector.x;
int y = vector.y;
```
这样就可以直接获取 Vector2 变量的 x 或 y 值,而不需要进行类型转换了。