я использовал код из библиотеки AForge.NETНаклон линии с помощью преобразования houghline C# AForge.NET
HoughLineTransformation lineTransform = new HoughLineTransformation();
// apply Hough line transofrm
lineTransform.ProcessImage(sourceImage);
Bitmap houghLineImage = lineTransform.ToBitmap();
// get lines using relative intensity
HoughLine[] lines = lineTransform.GetLinesByRelativeIntensity(0.5);
foreach (HoughLine line in lines)
{
// get line's radius and theta values
int r = line.Radius;
double t = line.Theta;
// check if line is in lower part of the image
if (r < 0)
{
t += 180;
r = -r;
}
// convert degrees to radians
t = (t/180) * Math.PI;
Console.WriteLine("{0},{1}",t,r)
// get image centers (all coordinate are measured relative
// to center)
int w2 = image.Width /2;
int h2 = image.Height/2;
double x0 = 0, x1 = 0, y0 = 0, y1 = 0;
if (line.Theta != 0)
{
// none-vertical line
x0 = -w2; // most left point
x1 = w2; // most right point
// calculate corresponding y values
y0 = (-Math.Cos(t) * x0 + r)/Math.Sin(t);
y1 = (-Math.Cos(t) * x1 + r)/Math.Sin(t);
}
else
{
// vertical line
x0 = line.Radius;
x1 = line.Radius;
y0 = h2;
y1 = -h2;
}
// draw line on the image
Drawing.Line(sourceData,
new IntPoint((int) x0 + w2, h2 - (int) y0),
new IntPoint((int) x1 + w2, h2 - (int) y1),
Color.Red);
}
Я добавил Console.WriteLine ("{0}, {1}" , t, r) для отображения кода наклон и радиус линий.
На выходе значение угла наклона составляет 45 или 135 градусов для всех линий изображения, хотя изображение имеет различные наклоны линий. В чем может быть причина? Пожалуйста, помогите ...
В коде отсутствуют ошибки компиляции.
делать линии, которые вы рисуете в конце, основанные на обнаруженной параметризации линии, правильно? – vidstige
Что вы ожидаете, что вы получаете? Без этого все, что мы можем сказать, это то, что он работает как написанный ... – vonbrand