public void fitLine(Mat srcImage, List<Point2f> fitPList, ref Point p1,ref Point p2) { if (fitPList.Count < 2) return; //Cv2.FitLine(fitPList, DistanceTypes.L2, 0, 0.01, 0.01); var line = Cv2.FitLine(fitPList, DistanceTypes.L1, 0, 0, 0); line.FitSize(srcImage.Width, srcImage.Height, out p1, out p2); }优化亚像素生成新的函数
时间: 2024-02-14 13:14:03 浏览: 462
在原有的`fitLine()`函数中添加优化亚像素的功能,生成新的函数如下:
```
public void fitLineWithSubPixel(Mat srcImage, List<Point2f> fitPList, ref Point p1, ref Point p2)
{
if (fitPList.Count < 2) return;
var line = Cv2.FitLine(fitPList, DistanceTypes.L1, 0, 0, 0);
var startPoint = new Point(line[2], line[3]);
var endPoint = new Point(line[2] + line[0] * srcImage.Height, line[3] + line[1] * srcImage.Height);
Cv2.SubPixelLine(srcImage, line, out line, 20, 0.01, 0.01);
p1 = new Point(line[2], line[3]);
p2 = new Point(line[2] + line[0] * srcImage.Height, line[3] + line[1] * srcImage.Height);
}
```
该函数使用了`Cv2.SubPixelLine()`方法对直线进行亚像素级别的优化,以提高拟合的准确性。同时,为了方便使用,参数列表中新增了输入图像`srcImage`的参数。使用该函数时,需要传入原始图像和拟合直线所在的点集,函数将返回拟合直线的起点和终点。
阅读全文