public static Point[] GetEdgePoints(Mat image, Point lineP1, Point lineP2) { // 提取边缘 Mat edgeImage = new Mat(); Cv2.Canny(image, edgeImage, 100, 200); // 获取直线上的所有像素点 LineIterator it = new LineIterator(edgeImage, lineP1, lineP2); List<Point> points = new List<Point>(); while (!it.IsEnd) { points.Add(it.Pos()); it.Next(); } return points.ToArray(); }的 LineIterator it没有。Isend pos
时间: 2024-03-10 19:46:12 浏览: 91
HHT软件资料DataDemon帮助文件-Viewer.doc
在OpenCVSharp4.5中,LineIterator的IsEnd和Pos方法的名称略有不同。下面是修改后的代码:
```
using OpenCvSharp;
public static Point[] GetEdgePoints(Mat image, Point lineP1, Point lineP2)
{
// 提取边缘
Mat edgeImage = new Mat();
Cv2.Canny(image, edgeImage, 100, 200);
// 获取直线上的所有像素点
LineIterator it = new LineIterator(edgeImage, lineP1, lineP2);
List<Point> points = new List<Point>();
foreach (Point point in it)
{
points.Add(point);
}
return points.ToArray();
}
```
该函数首先使用Canny算子提取图像边缘,接下来通过LineIterator遍历直线上的所有像素点,将其添加到一个List<Point>对象中。这里使用了foreach语句来遍历LineIterator中的所有点,将其添加到List<Point>对象中。最后将List<Point>对象转换为Point[]数组并返回。
阅读全文