我将OpenCvSharp与C#结合使用,无法找到如何应用FitLine方法。
public static void Apply(Bitmap bitmap)
{
using (Mat source = bitmap.ToMat())
{
var output = new List<OpenCvSharp.CPlusPlus.Vec4f>(); // I don't know which variable is accepted.
Cv2.FitLine(source, OutputArray.Create(output), DistanceType.L2, 0, 0.01, 0.01);
Debug.WriteLine(output);
}
}FitLine方法中发生异常,错误消息如下所示。
“OpenCvSharp.OpenCVException”类型的异常发生在OpenCvSharp.dll中,但未在用户代码中处理 更多信息:(is2d \x{e76f}\x{e76f}& (points.depth()、== CV_32F \x{e76f} points.depth() == CV_32S)
我使用source更改了source.ConvertTo(source, MatType.CV_32F, 1.0 / 255.0);,以便在错误消息中匹配MatType CV_32F,但是显示了相同的错误。
作为第二次试验,请参阅此链接,下面的代码抛出内存保护异常。
using (Mat source = bitmap.ToMat())
{
var input = new List<OpenCvSharp.CPlusPlus.Point2f>();
for (int i = 0; i < source.Width; i++)
{
for (int j = 0; j < source.Height; j++)
{
if (source.At<byte>(i, j) > 0)
input.Add(new Point2f(i, j));
}
}
var output = new List<OpenCvSharp.CPlusPlus.Vec4f>();
Cv2.FitLine(InputArray.Create(input), OutputArray.Create(output), DistanceType.L2, 0, 0.01, 0.01);
Debug.WriteLine(output);
return source.ToBitmap();
}如何正确应用FitLine?
发布于 2016-02-11 18:40:07
我只是在下面这个url http://answers.opencv.org/question/14547/fitline-always-crashes/?answer=14550#post-id-14550的基础上模拟了这个测试,它看起来很有效。这个例子是使用OpenCvSharp 3.1的。
List<Point2f> points = new List<Point2f>();
points.Add(new Point2f(3, 3));
points.Add(new Point2f(4, 4));
points.Add(new Point2f(5, 5));
Line2D line = Cv2.FitLine(points, DistanceTypes.L2, 0, 0.01, 0.01);https://stackoverflow.com/questions/33684542
复制相似问题