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

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

Тема: Выделить лица из фото (пакет Emgu.CV)


Выделить лица из фото (пакет Emgu.CV)


storagefolder - папка с файлами фото, которые будут сохранены


Код:
public Image<Gray, byte>[] ExtractFacesFromPhoto(Image<Rgb, byte> img, string file_prefix, string storagefolder, bool savetofile = false)
        {

//  массив Image с лицами, IsFaceOnPhoto(img) возвращает количество лиц
            Image<Gray, byte>[] ret = new Image<Gray, byte>[IsFaceOnPhoto(img)];


            Image<Gray, byte> gray_img = ConvertToGray(img);

            Rectangle[] rec = GetRectanglesForFaces(gray_img);

            if (rec.Length != ret.Length)
                return ret;


            for (int i = 0; i < rec.Length; i++)
                ret[i] = gray_img.GetSubRect(rec[i]);


            if (savetofile)
            {


                for (int i = 0; i < rec.Length; i++)
                {
                   
                    AddToErrorLog("Сохранение в файл: " + FilesAndFolders.GenerateUniqueFilename(file_prefix, $"{Directory.GetCurrentDirectory()}\\{storagefolder}\\", "jpg", "_"));

               //     MessageBox.Show(FilesAndFolders.GenerateUniqueFilename(file_prefix, $"{Directory.GetCurrentDirectory()}\\{storagefolder}\\", "jpg", "_"));
                    ret[i].Save(FilesAndFolders.GenerateUniqueFilename(file_prefix, $"{Directory.GetCurrentDirectory()}\\{storagefolder}\\", "jpg", "_"));

                }
            }

            return ret;

        }
Admin вне форума   Цитировать 14
 Нажмите здесь, чтобы написать комментарий к этому сообщению  
 

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