title: Face detection to unlock door
body: <p>I found this code from opencv website and tried it out. I got this problem where detectAndDisplay shows an error saying incomplete type is not allowed, CascadeClassifier is not a type name, CvCapture is undefined and so on... How do I solve these errors</p>
  
  <pre><code>#include "C:\opencv\build\include\opencv\objdetect.hpp"
  #include "C:\opencv\build\include\opencv2\highgui.hpp"
  #include "C:\opencv\build\include\opencv2\imgproc.hpp"
  
  #include &lt;iostream&gt;
  #include &lt;stdio.h&gt;
  
  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&lt;Rect&gt; 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( size_t i = 0; i &lt; 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&lt;Rect&gt; eyes;     
  
      //-- In each face, detect eyes    
      eyes_cascade.detectMultiScale( faceROI, eyes, 1.1, 2, 0 |CV_HAAR_SCALE_IMAGE, Size(30, 30) );    
  
      for( size_t j = 0; j &lt; 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[j].height)*0.25 );    
         circle( frame, center, radius, Scalar( 255, 0, 0 ), 4, 8, 0 );    
       }   
    }   
    //-- Show what you got    
    imshow( window_name, frame );   
  }
  </code></pre>