Поиск окружности с помощью Emgu cv C#

131
23 августа 2019, 23:50

не могли бы вы мне помочь. Я отфильтровал изображение, и вот результат.

На исходном изображении точка красная. Как мне отслеживать координаты этой точки? Вот код отвечающий за фильтрацию изображения и поиск.

public PointF FindCircle(Bitmap img, out Bitmap imageHandle)
{
    img = img.Clone(Rectangle, img.PixelFormat);
    mainImage = new Emgu.CV.Image<Emgu.CV.Structure.Bgr, byte>(img);
    processedImage = mainImage.InRange(new Emgu.CV.Structure.Bgr(ColorData.Lower.Blue, ColorData.Lower.Green, ColorData.Lower.Red), new Emgu.CV.Structure.Bgr(ColorData.Upper.Blue, ColorData.Upper.Green, ColorData.Upper.Red));
    processedImage = processedImage.SmoothGaussian(9);
    Emgu.CV.Structure.CircleF[] circles = processedImage.HoughCircles(new Emgu.CV.Structure.Gray(ColorData.LowerGray), new Emgu.CV.Structure.Gray(ColorData.UpperGray), 2, processedImage.Height / 4, Main.main.GetMinRadius(), Main.main.GetMaxRadius()).SelectMany(u => u.Select(s => s)).ToArray();
    foreach (var c in circles)
    {
        Emgu.CV.CvInvoke.Circle(mainImage, new Point((int)c.Center.X, (int)c.Center.Y), 3, new Emgu.CV.Structure.MCvScalar(0, 255, 0), -1, Emgu.CV.CvEnum.LineType.AntiAlias, 0);
        mainImage.Draw(c, new Emgu.CV.Structure.Bgr(Color.Red), 3);
    }
    imageHandle = processedImage.Bitmap;
    return PointF.Empty;
}

Заранее спасибо.

Answer 1

Эта точка на хорошо оформленную окружность никак не тянет, и метод Хафа вряд ли сможет правильно найти её центр.

В данном случае, если на реальном отфильтрованном изображении нет помех, то достаточно найти максимум cvMinMaxLoc или центр масс cvMoments

READ ALSO
Как загрузить изображение на сайт через c# selenium chromedriver?

Как загрузить изображение на сайт через c# selenium chromedriver?

При нажатии на button на веб-странице появляется стандартное окно загрузки файлаИнтересует самый универсальный способ, подходящий под большинство...

232
WPF - Как отследить перерисовку ListBox?

WPF - Как отследить перерисовку ListBox?

Есть коллекция объектов, у каждого их которых есть свойство ParentIdЕсть ListBox, к которому привязана эта коллекция объектов

119
Замена передачи this

Замена передачи this

Можно ли получить BaseClass в ChildClass без передачи его в конструктор?

126
C# форма и 2 tcpserver [закрыт]

C# форма и 2 tcpserver [закрыт]

Нужен совет реализации след структуры1) форма 2) поток с таймером

115