opencvsharp 怎么提取line起点 到终点的所有点
时间: 2024-01-21 15:19:55 浏览: 25
要提取一条直线的所有点,你可以使用OpenCVSharp的HoughLinesP方法来检测直线,并返回每条直线的起始点和终点。然后,你可以使用这些起始点和终点来计算直线的所有点。
以下是一个示例代码:
```
using System;
using OpenCvSharp;
namespace LineExtraction
{
class Program
{
static void Main(string[] args)
{
Mat src = Cv2.ImRead("line.jpg", ImreadModes.Grayscale);
// 使用HoughLinesP方法检测直线
LineSegmentPoint[] lines = Cv2.HoughLinesP(src, 1, Math.PI / 180, 50, 50, 10);
// 遍历每条直线,提取起点和终点,并计算所有点
foreach (LineSegmentPoint line in lines)
{
Point[] points = Enumerable.Range(0, (int)line.Length).Select(i => new Point((int)(line.P1.X + (line.P2.X - line.P1.X) * i / line.Length), (int)(line.P1.Y + (line.P2.Y - line.P1.Y) * i / line.Length))).ToArray();
// 在图像上绘制直线
Cv2.Line(src, line.P1, line.P2, Scalar.Red, 2);
}
Cv2.ImShow("result", src);
Cv2.WaitKey(0);
Cv2.DestroyAllWindows();
}
}
}
```
在这个示例代码中,我们首先读入一张灰度图像,并使用HoughLinesP方法检测直线。然后,我们遍历每条直线,使用Linq语句计算所有点,并在图像上绘制直线。最后,我们将结果显示出来并等待按键退出。
注意,这个示例代码仅仅提取了一条直线的所有点。如果你需要提取多条直线的所有点,你需要在遍历每条直线时,为每条直线创建一个新的点数组,并将所有点添加到这个数组中。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![m](https://img-home.csdnimg.cn/images/20210720083646.png)