Dec. 8, 2019, 7:32 a.m.

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

OpenCV

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

        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));
        }
We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.
4

Спасибо, но у меня выдает ошибки в файле drawLandmarks.hpp.
Скажите пожалуйста, у Вас компилируется?

Тут не подскажу, пишу на питоне.)

  • Dec. 11, 2019, 8:12 a.m.
  • The answer was marked as a solution.

Так работает.
Взял этот пример https://api-2d3d-cad.com/face_recognition_with_opencv/

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));
    }


}

Comments

Only authorized users can post comments.
Please, Log in or Sign up
Donate

Hello, Dear Users of EVILEG!!!

If the site helped you, then support the development of the site financially, please.

You can do it by following ways:

Thank you, Evgenii Legotckoi

DK
Jan. 16, 2020, 3:19 a.m.
Dmitrij Korjagin

C++ - Test 001. The first program and data types

  • Result:73points,
  • Rating points1
LZ
Jan. 16, 2020, 3:03 a.m.
Lilija Ziganurova

C++ - Test 005. Structures and Classes

  • Result:50points,
  • Rating points-4
p
Jan. 13, 2020, 4:59 p.m.
popkadurak

C++ - Test 002. Constants

  • Result:100points,
  • Rating points10
Last comments
Jan. 17, 2020, 2:31 a.m.
Andrej Jankovich

Выглядит как ошибка библиотеки. Расскажите подробно на какой платформе вы собираете проект (MinGW или MSVC) их версии и версии Qt.
D
Jan. 16, 2020, 12:06 p.m.
DENIZ1819

Доброго времени суток, не подскажите, что делать в данной ситуации, после того, как я сделал все вышеуказанные инструкции для подключения библиотеки к проекту?
Jan. 14, 2020, 5:33 a.m.
Evgenij Legotskoj

Рекомендую Wt, достаточно мощная вещь. Этот фреймворк может использоваться для написания сайтов на C++, либо можно использовать только отдельный компоненты, например только ORM. Но я не знаю, ка…
a
Jan. 14, 2020, 5:29 a.m.
ayb

Спасибо за инфу. Поиск качественной ORM привел меня только к sqlite_orm, но не подходит из-за необходимости полноценной поддержки c++14. Про framework Wt не слышал, спасибо за наводку.
Jan. 14, 2020, 2:50 a.m.
Evgenij Legotskoj

Вы заблуждаетесь. Любая нормальная ORM позволяет выполнение сырых SQL запросов. А если хорошо разобраться в работе моделей данных в Qt, то не составит труда использовать ORM вместе с Qt, ту же с…
Now discuss on the forum
VZ
Jan. 18, 2020, 7:25 a.m.
Vladimir Zhitkovsky

В приложении есть страницы с контролами. в с++ я заполняю структуры ассоциированные с контролами в qml. затем генерю сигнал о том, что все данные готовы и в qml по этому сигналу заполняю контрол…
Jan. 18, 2020, 7:12 a.m.
Ruslan Polupan

Строку host разкоментировать и указать адрес сервера [listener];host=192.168.0.100port=8080minThreads=4maxThreads=100cleanupInterval=60000readTimeout=60000maxRequestSize=16000maxMulti…
Jan. 17, 2020, 2:20 a.m.
Intruder

Александр, доброго дня! Я тоже только учусь и поэтому мой код может быть не совершенен. За отклик большое спасибо.
L
Jan. 16, 2020, 8:14 p.m.
LesLype

Oct Products Similiar To Lasix Kamagra Now.Co.Uk Sky Pharmacy Canada [url=http://cialibuy.com]Buy Cialis[/url] Viagra Ricetta Ripetibile
Jan. 16, 2020, 6:05 p.m.
Aleksej Vnukov

в лоадер вроде как нельзя передать значение при загрузке, я не нашел такой возможности, через стек без проблем. если использую лоадер - я передаю в С++ нужные параметры, а потом при загрузке стр…
EVILEG
About
Services
© EVILEG 2015-2019
Recommend hosting TIMEWEB