Форум программистов, компьютерный форум, киберфорум
C++: OpenCV
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
76 / 1 / 0
Регистрация: 27.03.2019
Сообщений: 58

Как распознать лицо используя cv::face::drawFacemarks()

07.12.2019, 13:51. Показов 2487. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Хотел бы распознать лицо с использованием OpenCV.
Тут нашел пример, кое что сделал, что бы его запустить, но остановился на facemark->loadModel();
Скажите пожалуйста, какая модель нужна?
Есть ли примеры распознавания лица на с++?

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
        std::vector<cv::Rect> faces;
        std::vector<std::vector<cv::Point2f> > landmarks;
        //cv::Ptr<cv::face::Facemark> facemark = cv::face::createFacemarkLBF();
        //cv::Ptr<cv::face::Facemark> facemark = cv::face::createFacemarkAAM();
        cv::Ptr<cv::face::Facemark> facemark = cv::face::createFacemarkKazemi();
        facemark->loadModel();
 
        facemark->getFaces(img, faces);
        facemark->fit(img, faces, landmarks);
        for(int j=0;j<rects.size();j++){
            cv::face::drawFacemarks(frame, landmarks[j], Scalar(0,0,255));
        }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.12.2019, 13:51
Ответы с готовыми решениями:

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

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

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

2
 Аватар для Decosa
174 / 66 / 21
Регистрация: 06.07.2017
Сообщений: 353
08.12.2019, 22:14
Предполагается использование готовой модели или тренировка своей модели >> training()
0
76 / 1 / 0
Регистрация: 27.03.2019
Сообщений: 58
11.12.2019, 16:11  [ТС]
У меня пока получилось так. Скажите пожалуйста как доделать этот код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    cv::Mat mat(myImageOriginal.height(), myImageOriginal.width(), CV_8UC4, myImageOriginal.bits());
    //cv::cvtColor(mat, cvMatProcessed, cv::COLOR_BGR2RGB);
    cvMatOriginal = mat;
 
 
    if(!cvMatOriginal.data){
        qDebug()<<"not load image in cv::Mat";
    }
    else{
        qDebug()<<"load image in cv::Mat";
 
 
        std::vector<cv::Rect> faces;
        std::vector<std::vector<cv::Point2f> > landmarks;
        cv::Ptr<cv::face::Facemark> facemark = cv::face::createFacemarkLBF();
        //cv::Ptr<cv::face::Facemark> facemark = cv::face::createFacemarkAAM();
        //cv::Ptr<cv::face::Facemark> facemark = cv::face::createFacemarkKazemi();
        facemark->loadModel("lbfmodel.yaml");
        CascadeClassifier faceDetector("haarcascade_frontalface_alt2.xml");
        Mat frame, gray;
        frame = cvMatOriginal;
        cvtColor(frame, gray, COLOR_BGR2GRAY);
        faceDetector.detectMultiScale(gray, faces);
Добавлено через 58 минут
Так работает.
Взял этот пример https://api-2d3d-cad.com/face_... th_opencv/

C++ (Qt)
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
void MainWindow::on_pushButton_4_clicked() //фото определение лица
{
 
    // Load Face cascade (.xml file)
    //cv::CascadeClassifier face_cascade;
    //face_cascade.load("haarcascade_frontalface_alt2.xml");
 
 
 
    //qDebug()<<myImageOriginal.format();
 
    //cvMatOriginal = cv::imread("dragon.jpeg");  //0 - 3 количество цветов
 
    //myImageOriginal.load(":/Images/Images/1.jpg");
    //ui->label1->setPixmap(QPixmap::fromImage(myImageOriginal,Qt::AutoColor).scaled(ui->label1->width(), ui->label1->height(), Qt::KeepAspectRatio));
    cv::Mat mat(myImageOriginal.height(), myImageOriginal.width(), CV_8UC4, myImageOriginal.bits());
    //cv::cvtColor(mat, cvMatProcessed, cv::COLOR_BGR2RGB);
    cvMatOriginal = mat;
 
 
    if(!cvMatOriginal.data){
        qDebug()<<"not load image in cv::Mat";
    }
    else{
        qDebug()<<"load image in cv::Mat";
 
 
        std::vector<cv::Rect> faces;
        std::vector<std::vector<cv::Point2f> > landmarks;
        cv::Ptr<cv::face::Facemark> facemark = cv::face::createFacemarkLBF();
        //cv::Ptr<cv::face::Facemark> facemark = cv::face::createFacemarkAAM();
        //cv::Ptr<cv::face::Facemark> facemark = cv::face::createFacemarkKazemi();
        facemark->loadModel("lbfmodel.yaml");
        CascadeClassifier faceDetector("haarcascade_frontalface_alt2.xml");
        Mat frame, gray;
        frame = cvMatOriginal;
        cvtColor(frame, gray, COLOR_BGR2GRAY);
        faceDetector.detectMultiScale(gray, faces);
        bool success = facemark->fit(frame, faces, landmarks);
        if (success)
        {
            // If successful, render the landmarks on the face
            for (size_t i = 0; i < faces.size(); i++)
            {
                cv::rectangle(frame, faces[i], Scalar(0, 255, 0), 3);
            }
        }
 
 
 
        cv::cvtColor(cvMatOriginal, cvMatProcessed, cv::COLOR_BGR2RGB); //перевод BRG в RGB
        QImage imageFromCvMat = QImage((uchar*) cvMatProcessed.data, cvMatProcessed.cols, cvMatProcessed.rows, cvMatProcessed.step, QImage::Format_RGB888); //перевод Мат в QImage
 
 
        qDebug()<<imageFromCvMat.size()<<myImageOriginal.size()<<cvMatOriginal.rows;
        ui->label2->setPixmap(QPixmap::fromImage(imageFromCvMat, Qt::AutoColor).scaled(ui->label2->width(), ui->label2->height(), Qt::KeepAspectRatio));
    }
 
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.12.2019, 16:11
Помогаю со студенческими работами здесь

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

Не получается прикрутить шрифты используя font-face
Здравствуйте, использую open server, мучаюсь второй день не получается прикрутить шрифты через font-face, шрифты не появляются ни в одном...

Как сохранить лицо?
Многие из нас пользуются функцией Touch ID на телефонах, но мало кто задумывается о рисках сопряженных с ее использованием. Защита...

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

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


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru