错误 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 18:05:05 浏览: 188
这个编译错误提示是因为在以下代码中,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);
}
```
这样就可以避免编译错误了。
Point center = circle.Center; CS0104 “Point”是“System.Drawing.Point”和“OpenCvSharp.Point”之间的不明确的引用
在代码中,您遇到了CS0104编译错误,这是因为`Point`关键字在您的上下文中存在歧义。`System.Drawing.Point`是.NET Framework中的一个类型,通常用于Windows图形应用程序,而`OpenCvSharp.Point`则是OpenCV for .NET库里的一个点类型,用于图像处理。当你尝试通过`circle.Center`访问某个圆的中心点时,由于`Point`未明确指定是指哪一个特定的类型,编译器无法确定。
解决这个问题的方式是明确指定类型,例如:
```csharp
using System.Drawing;
using OpenCvSharp;
// ...
Point systemDrawPoint = new Point(circle.Center.X, circle.Center.Y);
OpenCvSharp.Point opencvPoint = (OpenCvSharp.Point)circle.Center;
```
这里通过`using`语句导入了相应的命名空间,并在使用`circle.Center`之前明确了它的类型。如果你需要在这两个库之间切换使用,记得根据实际需求选择合适的`Point`类型。
阅读全文