Перейти к содержимому
Compvision.ru
eros16700

CascadeClassifier проблемы при загрузке хml файла

Recommended Posts

Доброго всем дня! Я новичок в openCV. Скачал последнюю стабильную версию 2.3.1, и хотел бы сделать программу для распознаванию лиц. Нашел в интернет статью http://opencv.itseez.com/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html, где на простом примере показывается как все работает...

Вот и сам код


#include "opencv2/objdetect/objdetect.hpp"

 #include "opencv2/highgui/highgui.hpp"

 #include "opencv2/imgproc/imgproc.hpp"


 #include <iostream>

 #include <stdio.h>


 using namespace std;

 using namespace cv;


 /** Function Headers */

 void detectAndDisplay( Mat frame );


 /** Global variables */

 String face_cascade_name = "haarcascade_frontalface_alt.xml";

 String eyes_cascade_name = "haarcascade_eye_tree_eyeglasses.xml";

 CascadeClassifier face_cascade;

 CascadeClassifier eyes_cascade;

 string window_name = "Capture - Face detection";

 RNG rng(12345);


 /** @function main */

 int main( int argc, const char** argv )

 {

   CvCapture* capture;

   Mat frame;


   //-- 1. Load the cascades

   if( !face_cascade.load( face_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };

   if( !eyes_cascade.load( eyes_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };


   //-- 2. Read the video stream

   capture = cvCaptureFromCAM( -1 );

   if( capture )

   {

     while( true )

     {

       frame = cvQueryFrame( capture );


       //-- 3. Apply the classifier to the frame

       if( !frame.empty() )

       { detectAndDisplay( frame ); }

       else

       { printf(" --(!) No captured frame -- Break!"); break; }


       int c = waitKey(10);

       if( (char)c == 'c' ) { break; }

      }

   }

   return 0;

 }


/** @function detectAndDisplay */

void detectAndDisplay( Mat frame )

{

  std::vector<Rect> faces;

  Mat frame_gray;


  cvtColor( frame, frame_gray, CV_BGR2GRAY );

  equalizeHist( frame_gray, frame_gray );


  //-- Detect faces

  face_cascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(30, 30) );


  for( int i = 0; i < faces.size(); i++ )

  {

    Point center( faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5 );

    ellipse( frame, center, Size( faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar( 255, 0, 255 ), 4, 8, 0 );


    Mat faceROI = frame_gray( faces[i] );

    std::vector<Rect> eyes;


    //-- In each face, detect eyes

    eyes_cascade.detectMultiScale( faceROI, eyes, 1.1, 2, 0 |CV_HAAR_SCALE_IMAGE, Size(30, 30) );


    for( int j = 0; j < eyes.size(); j++ )

     {

       Point center( faces[i].x + eyes[j].x + eyes[j].width*0.5, faces[i].y + eyes[j].y + eyes[j].height*0.5 );

       int radius = cvRound( (eyes[j].width + eyes[i].height)*0.25 );

       circle( frame, center, radius, Scalar( 255, 0, 0 ), 4, 8, 0 );

     }

  }

  //-- Show what you got

  imshow( window_name, frame );

 }

Проект скомпилировался без проблем, но когда программа доходит до строчки:

if( !face_cascade.load( face_cascade_name ) ){ printf("--(!)Error loading\n"); return -1; };

выводится сообщение об ошибке:

"Unhandled exception at 0x7c812afb in faceDetect.exe: Microsoft C++ exception: cv::Exception at memory location 0x0011f608..".

Вопрос следующий: кто-нибудь сталкивался с подобным? и как это можно решить?

Благодарю наперед всех кто даст дельные советы!

P.S. Пути к файлам haarcascade_frontalface_alt.xml и haarcascade_eye_tree_eyeglasses.xml правильные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Спасибо всем за внимание, проблема решена:)

Я пользуюсь VS 2008, суть в том, что для сборок debug и release нужно использовать различные библиотеке OpenCV: для debug - библиотеки из буковой "d" в конце, например: opencv_objdetect231d.lib; для release - opencv_objdetect231.lib. Вот и вся проблема:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×