СЦБИСТ - железнодорожный форум, блоги, фотогалерея, социальная сеть
Это сообщение показано отдельно, перейти в тему, где размещено сообщение: Работа с изображениями пакета Emgu.CV
Старый 23.09.2023, 06:54   #1 (ссылка)
Crow indian
 
Аватар для Admin

Регистрация: 21.02.2009
Возраст: 40
Сообщений: 30,159
Поблагодарил: 398 раз(а)
Поблагодарили 6009 раз(а)
Фотоальбомы: 2607 фото
Записей в дневнике: 839
Репутация: 126146

Тема: Работа с изображениями пакета Emgu.CV


Некоторые функции преобразования изображений перед из распознаванием.

Код:
using Emgu.CV;
using Emgu.CV.Face;
using Emgu.CV.CvEnum;
using Emgu.CV.Structure;
using Emgu.Util;

Преобразование из цветного в грейскейл:


Код:
public Image<Gray, byte> ConvertToGray(Image<Rgb, byte> img, ColorConversion cnv = ColorConversion.Rgb2Gray, int size_x = 0, int size_y = 0)
        {

            UMat ret = new UMat();


            if (size_x == 0 || size_y == 0)

                CvInvoke.CvtColor(img, ret, cnv);
            else
                CvInvoke.CvtColor(img.Resize(size_x, size_y, Inter.Cubic), ret, cnv);


            CvInvoke.EqualizeHist(ret, ret);


            return ret.ToImage<Gray, byte>();

        }
Admin добавил 23.09.2023 в 06:53
Загрузка из файлов в словарь:

Код:
  public Dictionary<Image<Gray, byte>, string> LoadImageDatabase(List<string> files, string extension, string prefix)
        {
            Dictionary<Image<Gray, byte>, string> ret = new Dictionary<Image<Gray, byte>, string>();   // KeyPair  фото - ФИО


            for (int i = 0; i < files.Count; i++)
                if (File.Exists(files[i]))
                {
                    Image<Gray, byte> img = ConvertToGray(new Image<Rgb, byte>(files[i]));

                    string fio = ExtractFIO(files[i], extension, prefix);

                    if (!ret.ContainsKey(img) && fio != "")
                        ret.Add(img, fio);

                }


            return ret;

        }
Admin добавил 23.09.2023 в 06:54
Вспомогательная функция выделения ФИО из имени файла:

Код:
  public string ExtractFIO(string filename, string extension, string prefix)
        {
            string ret = filename;

            MessageBox.Show(filename + "|||" + extension + "|||" + prefix);

            ret = ret.Substring(0, filename.Length - ("." + extension).Length);

            if (ret.Length - prefix.Length > 0)    //  проверяем на всякий случай   что внутри имени есть ФИО 
                ret = ret.Substring(prefix.Length, ret.Length - prefix.Length);
            else
                ret = "";   // Если ФИО нет - возвращаем пустышку

            return ret;
        }

Последний раз редактировалось Admin; 23.09.2023 в 06:54. Причина: Добавлено сообщение
Admin вне форума   Цитировать 14
 Нажмите здесь, чтобы написать комментарий к этому сообщению  
 

Яндекс.Метрика