Самый быстрый способ обнаружения объектов, основанный на некоторых цветах изображения emgu или opencv - PullRequest
0 голосов
/ 29 сентября 2018

У меня есть список некоторых определенных цветов в массиве (около 60 разных цветов, и они не находятся в диапазоне), я хочу обнаружить их в изображениях Emgucv или opencv.На самом деле я собираюсь обнаружить некоторые объекты по их цветам, и я не хочу сейчас делать это с помощью методов ИИ.Делать это через цикл очень медленно, я ищу самый быстрый способ.Заранее спасибо.

1 Ответ

0 голосов
/ 02 декабря 2018

Вы можете сделать это в несколько шагов:

1 - конвертировать ваше изображение в домен HSV, просто следуя коду

Image<Hsv, byte> hsv = original.Convert<Hsv, byte>()

оригинал - это ваше изображение, может быть, это изображение любого типа.

2 - отфильтруйте ваше изображение:

   var m_Lower = new Hsv(mask.Hue - 5, mask.Satuation - 5, mask.Value - 5);
   var m_Higher = new Hsv(mask.Hue + 5, mask.Satuation + 5, mask.Value + 5);
   Image<Gray, byte> huefilter = hsv.InRange(m_Lower, m_Higher);

3 - объедините их, самый быстрый способ - преобразовать их в растровое изображение и сохранить (или нет), а затем объединить их

Bitmap img3 = new Bitmap(huefilter.Width, huefilter.Height);
Graphics g = Graphics.FromImage(img3);
foreach (string file in files)
{
 img = new Bitmap(file);
 img.MakeTransparent(Color.White);
 g.DrawImage(img, new Point(0, 0));
 }

файлы сохраненных изображений

...