Михаиллл
08 грудня 2019 р. 18:32

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

OpenCV

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

  1. std::vector<cv::Rect> faces;
  2. std::vector<std::vector<cv::Point2f> > landmarks;
  3. //cv::Ptr<cv::face::Facemark> facemark = cv::face::createFacemarkLBF();
  4. //cv::Ptr<cv::face::Facemark> facemark = cv::face::createFacemarkAAM();
  5. cv::Ptr<cv::face::Facemark> facemark = cv::face::createFacemarkKazemi();
  6. facemark->loadModel();
  7.  
  8. facemark->getFaces(img, faces);
  9. facemark->fit(img, faces, landmarks);
  10. for(int j=0;j<rects.size();j++){
  11. cv::face::drawFacemarks(frame, landmarks[j], Scalar(0,0,255));
  12. }
3

Вам це подобається? Поділіться в соціальних мережах!

4
Михаиллл
  • 08 грудня 2019 р. 21:19

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

    qml_puthon_user
    • 08 грудня 2019 р. 21:21

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

      Михаиллл
      • 11 грудня 2019 р. 19:12
      • Відповідь була позначена як рішення.

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

      1. void MainWindow::on_pushButton_4_clicked() //фото определение лица
      2. {
      3.  
      4. // Load Face cascade (.xml file)
      5. //cv::CascadeClassifier face_cascade;
      6. //face_cascade.load("haarcascade_frontalface_alt2.xml");
      7.  
      8.  
      9.  
      10. //qDebug()<<myImageOriginal.format();
      11.  
      12. //cvMatOriginal = cv::imread("dragon.jpeg"); //0 - 3 количество цветов
      13.  
      14. //myImageOriginal.load(":/Images/Images/1.jpg");
      15. //ui->label1->setPixmap(QPixmap::fromImage(myImageOriginal,Qt::AutoColor).scaled(ui->label1->width(), ui->label1->height(), Qt::KeepAspectRatio));
      16. cv::Mat mat(myImageOriginal.height(), myImageOriginal.width(), CV_8UC4, myImageOriginal.bits());
      17. //cv::cvtColor(mat, cvMatProcessed, cv::COLOR_BGR2RGB);
      18. cvMatOriginal = mat;
      19.  
      20.  
      21. if(!cvMatOriginal.data){
      22. qDebug()<<"not load image in cv::Mat";
      23. }
      24. else{
      25. qDebug()<<"load image in cv::Mat";
      26.  
      27.  
      28. std::vector<cv::Rect> faces;
      29. std::vector<std::vector<cv::Point2f> > landmarks;
      30. cv::Ptr<cv::face::Facemark> facemark = cv::face::createFacemarkLBF();
      31. //cv::Ptr<cv::face::Facemark> facemark = cv::face::createFacemarkAAM();
      32. //cv::Ptr<cv::face::Facemark> facemark = cv::face::createFacemarkKazemi();
      33. facemark->loadModel("lbfmodel.yaml");
      34. CascadeClassifier faceDetector("haarcascade_frontalface_alt2.xml");
      35. Mat frame, gray;
      36. frame = cvMatOriginal;
      37. cvtColor(frame, gray, COLOR_BGR2GRAY);
      38. faceDetector.detectMultiScale(gray, faces);
      39. bool success = facemark->fit(frame, faces, landmarks);
      40. if (success)
      41. {
      42. // If successful, render the landmarks on the face
      43. for (size_t i = 0; i < faces.size(); i++)
      44. {
      45. cv::rectangle(frame, faces[i], Scalar(0, 255, 0), 3);
      46. }
      47. }
      48.  
      49.  
      50.  
      51. cv::cvtColor(cvMatOriginal, cvMatProcessed, cv::COLOR_BGR2RGB); //перевод BRG в RGB
      52. QImage imageFromCvMat = QImage((uchar*) cvMatProcessed.data, cvMatProcessed.cols, cvMatProcessed.rows, cvMatProcessed.step, QImage::Format_RGB888); //перевод Мат в QImage
      53.  
      54.  
      55. qDebug()<<imageFromCvMat.size()<<myImageOriginal.size()<<cvMatOriginal.rows;
      56. ui->label2->setPixmap(QPixmap::fromImage(imageFromCvMat, Qt::AutoColor).scaled(ui->label2->width(), ui->label2->height(), Qt::KeepAspectRatio));
      57. }
      58.  
      59.  
      60. }

        Коментарі

        Only authorized users can post comments.
        Please, Log in or Sign up
        • Останні коментарі
        • Evgenii Legotckoi
          16 квітня 2025 р. 17:08
          Благодарю за отзыв. И вам желаю всяческих успехов!
        • IscanderChe
          12 квітня 2025 р. 17:12
          Добрый день. Спасибо Вам за этот проект и отдельно за ответы на форуме, которые мне очень помогли в некоммерческих пет-проектах. Профессиональным программистом я так и не стал, но узнал мно…
        • AK
          01 квітня 2025 р. 11:41
          Добрый день. В данный момент работаю над проектом, где необходимо выводить звук из программы в определенное аудиоустройство (колонки, наушники, виртуальный кабель и т.д). Пишу на Qt5.12.12 поско…
        • Evgenii Legotckoi
          09 березня 2025 р. 21:02
          К сожалению, я этого подсказать не могу, поскольку у меня нет необходимости в обходе блокировок и т.д. Поэтому я и не задавался решением этой проблемы. Ну выглядит так, что вам действитель…
        • VP
          09 березня 2025 р. 16:14
          Здравствуйте! Я устанавливал Qt6 из исходников а также Qt Creator по отдельности. Все компоненты, связанные с разработкой для Android, установлены. Кроме одного... Когда пытаюсь скомпилиров…