Member 14129828 Ответов: 0

Как обнаружить маленький белый шарик?


Я хочу обнаружить маленький белый шар с помощью "HoughCircles", у меня есть код, который обнаруживает красный шар.
Я не знаю, как изменить цвет на белый, потому что я не понимаю команду "InRange" и как заставить ее обнаружить очень маленький шар?

Что я уже пробовал:

mainImage = new Image<Bgr, byte>("D://222.jpg");
            processedImage = mainImage.InRange(new Bgr(0, 0, 128), new Bgr(47, 47, 255));
            processedImage = processedImage.SmoothGaussian(9);
            CircleF[] circles = processedImage.HoughCircles(new Gray(100), new Gray(50), 2, processedImage.Height / 4, 4, 400).SelectMany(u => u.Select(s => s)).ToArray();
            foreach (var c in circles)
            {
                
                CvInvoke.Circle(mainImage, new Point((int)c.Center.X, (int)c.Center.Y), 3, new MCvScalar(0, 255, 0), -1, Emgu.CV.CvEnum.LineType.AntiAlias, 0);
                mainImage.Draw(c, new Bgr(Color.Red), 3);
            }
            imageBox1.Image = mainImage;
            imageBox2.Image = processedImage;

Я не понимаю параметра
HoughCircles
и команда
InRange(new Bgr(0, 0, 128), new Bgr(47, 47, 255));

Richard MacCutchan

Вы можете спросить человека, который написал этот код.

Richard Deeming

Наобум: если предположить, Bgr представляет собой цвет, указанный в довольно необычном порядке "синий-зеленый-красный", попробуйте изменить параметры на:

mainImage.InRange(new Bgr(208, 208, 208), new Bgr(255, 255, 255));

Кроме того, как сказал Ричард, вам нужно будет спросить человека, который написал код.

phil.o

Это можно было бы квалифицировать как разумный ответ. Мой виртуальный 5!

Member 14129828

спасибо за ваш ответ

RedDk

Прочитав запись CHT, найденную в Википедии, кажется, что "угадывание" и "голосование", поскольку исследуемый объект не имеет известной 2D-компоненты (т. е. круговорот), могут быть/всегда будут в 3D ... оценка должна быть сделана. Таким образом, итеративно и путем размытия оси координат вместе с предполагаемым кругом, возможно, эти два расстояния могут быть закрыты ... пока не будет установлена лучшая определенность. В двух словах: размытие/оттенки серого убирают много шума из общей картины. Типичный круг становится менее яйцевидным, верно?

Подробнее см. раздел "Размытие по Гауссу".

Member 14129828

не могли бы вы сказать мне, что это за команда, или дать мне бумагу, которая поможет мне узнать, как определить белый цвет, пожалуйста...если у вас нет возражений

RedDk

Конечно. Должно быть что-то, что вы сможете сделать, используя текущую версию VS и несколько загрузок из elswhere. Проверить это:

https://www.codeproject.com/Articles/1187512/Image-recognition-with-Csharp-and-Emgu-libraries
https://www.codeproject.com/Articles/196168/Contour-Analysis-for-Image-Recognition-in-C
https://www.codeproject.com/Articles/19323/Image-Recognition-with-Neural-Networks

0 Ответов