Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/14: Рейтинг темы: голосов - 14, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 06.09.2011
Сообщений: 4

Распознать лицо на фотографии, используя интервалы цветовых составляющих

13.12.2011, 16:49. Показов 2730. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу написать алгаритм определения лица на фоторграфии, что бы лицо выделялось красной рамкой. Вот возникла проблема. Есть набор цветов, которые соответствуют разным цветам кожи, палитра в RGB:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Byte[] b = 
                    { 
                        232, 169, 134,                       
                        246, 223, 191,
                        239, 215, 191,
                        240, 217, 186,
                        243, 210, 169,
 
                        226, 189, 145,
                        233, 196, 154,
                        227, 195, 157,
                        237, 198, 131,
                        232, 188, 141,
 
                        226, 181, 150,
                        213, 168, 135,
                        213, 170, 125,
                        221, 172, 95,
                        213, 160, 82,
 
                        205, 151, 117,
                        190, 153, 127,
                        190, 138, 80,
                        187, 130, 49,
                        166, 115, 52                       
                    };
Но при ее использовании, определяется маленькое количество, то есть совпадений по трём составляющим цвета очень мало, среди нескольких фотографий с лицами. Как составить цикл и условие в нем который бы максимально бы сравнивал интервалы между цветами по всем трём параметрам.

Исходный пример:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
namespace FACE
{
    class FaceDetecting
    {
        Image imgSourse;       
        Bitmap bmp;       
 
        Byte[] b = 
                    { 
                        232, 169, 134,                       
                        246, 223, 191,
                        239, 215, 191,
                        240, 217, 186,
                        243, 210, 169,
 
                        226, 189, 145,
                        233, 196, 154,
                        227, 195, 157,
                        237, 198, 131,
                        232, 188, 141,
 
                        226, 181, 150,
                        213, 168, 135,
                        213, 170, 125,
                        221, 172, 95,
                        213, 160, 82,
 
                        205, 151, 117,
                        190, 153, 127,
                        190, 138, 80,
                        187, 130, 49,
                        166, 115, 52                       
                    };
 
        public Image FindFace(Image img)
        {
            imgSourse = img;
 
            bmp = new Bitmap(imgSourse);
            Graphics g = Graphics.FromImage(bmp);
 
            for (int i = 0; i < bmp.Height; i++)
            {
                for (int j = 0; j < bmp.Width; j++)
                {
                    Color now_color = bmp.GetPixel(j, i);   
 
                    for (int k = 0, l = 1, m = 2; m <= 59; k = k + 3, l = k + 1, m = l + 1)
                    {
                        Color faceColor = Color.FromArgb(255, b[k], b[l], b[m]);
                       
 
//Проблема вот в составлении условия. Возможно дополнительный цикл нужно будет
                        if (now_color == faceColor)
                        {
                            Pen pen = new Pen(Brushes.Red, 10f);
                           
                            g.DrawRectangle(pen, j - 50, i - 50, 200, 200);                            
                            goto loop;
                        }
                    }                    
                    
                }
             
            }
            loop: return bmp;
        }
    }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.12.2011, 16:49
Ответы с готовыми решениями:

Как распознать лицо используя cv::face::drawFacemarks()
Добрый день. Хотел бы распознать лицо с использованием OpenCV. Тут нашел пример, кое что сделал, что бы его запустить, но остановился...

ScrollBar с функцией преобразования значений цветовых составляющих TColorRef
Здравствуйте, надо создайть программу, с помощью которой пользователь мог бы увидеть в зависимости от значений насыщенности красного,...

Как распознать лицо
Добрый день. Хотел бы распознать лицо с использованием OpenCV. Тут нашел пример, кое что сделал, что бы его запустить, но остановился...

4
 Аватар для chessman1
167 / 96 / 23
Регистрация: 13.03.2011
Сообщений: 402
13.12.2011, 17:18
Зачем такие сложности. Первое - проверить расстояние между
зрачками. Второе - проверить расстояния от кончика носа до
ушей и нижней челюсти. Думаю попадание 99 %.
Если нужно точнее - см. другие параметры в инете.
0
Злой няш
 Аватар для I2um1
2136 / 1505 / 565
Регистрация: 05.04.2010
Сообщений: 2,881
13.12.2011, 17:26
Как бы фанера тоже цвета кожи. Здесь нужны более изощренные способы как например Метод Виолы-Джонса.
1
0 / 0 / 0
Регистрация: 06.09.2011
Сообщений: 4
13.12.2011, 17:38  [ТС]
Мне нужно именно по цвету вычислить лицо!!! Есть предложения по поводу цикла и условия?
0
 Аватар для chessman1
167 / 96 / 23
Регистрация: 13.03.2011
Сообщений: 402
13.12.2011, 23:35
Цитата Сообщение от MaRtOvSkIi_KoT Посмотреть сообщение
Мне нужно именно по цвету вычислить лицо!!! Есть предложения по поводу цикла и условия?
Ну это просто - если цвет черный - негритянка, если белый ...
ну и так далее..
Ржу - не могу.

 Комментарий модератора 
Прекращайте офф-топ
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.12.2011, 23:35
Помогаю со студенческими работами здесь

Добавить шум к одной из цветовых составляющих рисунка,повернуть его на заданный угол (90, 180, 270)
С поворотами на заданный угол я вроде бы справился,а вот как добавить шум к одной из цветовых составляющих не знаю:(

СМ Miele. Распознать элемент в электронном модуле, По фотографии. Модель не знаю
Помогите определить, что за диод. https://www.cyberforum.ru/savedimages/2014/02/28/4333147417.jpg

Как распознать часть ссылки, используя регулярное выражение?
всем привет! Мне необходимо получить значение переменной code посланной посредством get запроса. URL при этом выглядит так: ...

Как распознать молнию на картинке используя компьютерное зрения (OpenCV или альтернативы)
Всем привет. Передо мной стоит задача - произвольную фотографию проверить на наличие изображения молнии. С чего начать? Молния на...

Условие в Отчете: Если физ.лицо тогда, если юр.лицо тогда
Здравствуйте. Работаю в конфигурации Бухгалтерия предприятия, редакция 2.0 (2.0.43.6) на платформе 1С:Предприятие 8.2 (8.2.16.352)...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru