OpenCvSharp.Point.Round
时间: 2024-01-21 10:17:07 浏览: 22
OpenCvSharp.Point.Round 是一个方法,用于将一个浮点类型的坐标点四舍五入为最接近的整数坐标点。该方法在 OpenCvSharp 库中实现,可以通过引用该库来使用该方法。
示例代码:
```csharp
using OpenCvSharp;
Point2f point = new Point2f(1.5f, 2.3f);
Point roundedPoint = Point.Round(point);
Console.WriteLine($"Original point: ({point.X}, {point.Y})");
Console.WriteLine($"Rounded point: ({roundedPoint.X}, {roundedPoint.Y})");
```
输出结果:
```
Original point: (1.5, 2.3)
Rounded point: (2, 2)
```
在上面的示例中,我们创建了一个浮点类型的坐标点 `point`,然后使用 `Point.Round` 方法将其四舍五入为最接近的整数坐标点 `roundedPoint`。最后,我们将原始坐标点和四舍五入后的坐标点打印出来。
相关问题
OpenCvSharp cp.Round()出现“Point2f”未包含“Round”的定义,并且找不到可接受第一个“Point2f”类型参数的可访问扩展方法“Round”(是否缺少 using 指令或程序集引用?),请优化
在C#中,Point2f结构体没有Round方法,但是可以使用Convert.ToInt32方法将其转换为整数,然后再使用Round方法。以下是示例代码:
```csharp
using OpenCvSharp;
// 创建一个Point2f对象
Point2f point = new Point2f(1.5f, 2.5f);
// 将Point2f对象转换为整数
Point pointInt = new Point(Convert.ToInt32(point.X), Convert.ToInt32(point.Y));
// 使用Round方法
pointInt.Round();
```
另外,在使用OpenCvSharp时,需要确保已正确引用OpenCV库。如果出现引用问题,可以尝试使用NuGet包管理器来安装OpenCvSharp和OpenCV库。
opencvsharp提取图像 拐点坐标
要提取图像拐点的坐标,可以使用OpenCVSharp中的边缘检测函数,如Canny或Sobel。以下是一个示例代码,用于检测图像中的拐点并将其坐标保存在一个列表中。
```csharp
using (var src = new Mat("image.jpg", ImreadModes.Color))
{
var gray = new Mat();
var canny = new Mat();
var lines = new Mat();
Cv2.CvtColor(src, gray, ColorConversionCodes.BGR2GRAY);
Cv2.Canny(gray, canny, 50, 200);
Cv2.HoughLines(canny, lines, 1, Math.PI / 180, 150, 0, 0);
var points = new List<Point>();
for (int i = 0; i < lines.Rows; i++)
{
var rho = lines.At<double>(i, 0);
var theta = lines.At<double>(i, 1);
var a = Math.Cos(theta);
var b = Math.Sin(theta);
var x0 = a * rho;
var y0 = b * rho;
var pt1 = new Point(Math.Round(x0 + 1000 * (-b)), Math.Round(y0 + 1000 * (a)));
var pt2 = new Point(Math.Round(x0 - 1000 * (-b)), Math.Round(y0 - 1000 * (a)));
var angle = Math.Atan2(pt2.Y - pt1.Y, pt2.X - pt1.X) * 180.0 / Math.PI;
if (angle > 80 && angle < 100)
{
points.Add(new Point((pt1.X + pt2.X) / 2, (pt1.Y + pt2.Y) / 2));
}
}
}
```
这段代码首先将图像转换为灰度图像,并使用Canny函数检测边缘。然后使用霍夫变换检测直线,并计算每条直线的角度。最后,检查角度是否接近90度,并将直线的中心点添加到列表中。在这个例子中,我们假设拐点的角度在80到100度之间。