не могли бы вы мне помочь. Я отфильтровал изображение, и вот результат.
На исходном изображении точка красная. Как мне отслеживать координаты этой точки? Вот код отвечающий за фильтрацию изображения и поиск.
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;
}
Заранее спасибо.
Эта точка на хорошо оформленную окружность никак не тянет, и метод Хафа вряд ли сможет правильно найти её центр.
В данном случае, если на реальном отфильтрованном изображении нет помех, то достаточно найти максимум cvMinMaxLoc
или центр масс cvMoments
Виртуальный выделенный сервер (VDS) становится отличным выбором
При нажатии на button на веб-странице появляется стандартное окно загрузки файлаИнтересует самый универсальный способ, подходящий под большинство...
Есть коллекция объектов, у каждого их которых есть свойство ParentIdЕсть ListBox, к которому привязана эта коллекция объектов
Нужен совет реализации след структуры1) форма 2) поток с таймером