СЦБИСТ - железнодорожный форум, блоги, фотогалерея, социальная сеть

СЦБИСТ - железнодорожный форум, блоги, фотогалерея, социальная сеть (https://scbist.com/)
-   OpenCV (https://scbist.com/opencv/)
-   -   Работа с изображениями пакета Emgu.CV (https://scbist.com/opencv/56322-rabota-s-izobrazheniyami-paketa-emgu-cv.html)

Вы просматриваете версию для печати. Если вы хотите увидеть статью полностью - перейдите по ссылке

Admin 23.09.2023 06:54

Работа с изображениями пакета 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;
        }



Часовой пояс GMT +3, время: 00:09.

Powered by vBulletin® Version 3.8.1
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot


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