capture'未在此范围内声明capture = cvCaptureFromCAM(0);如何解决它

时间:2015-10-28 09:10:23

标签: opencv c++11

我正在网上关注一个用于检测眼睛的OpenCV库的教程

当我编译它时出现此错误我尝试修复它但没有找到

溶液。

  

main.cpp:59:1:错误:未在此范围内声明“捕获”    capture = cvCaptureFromCAM(0);

代码很长我只放了一些我认为导致此错误的部分。  :Full code

#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

#include <iostream>
#include <queue>
#include <stdio.h>
#include <math.h>

#include "constants.h"
#include "findEyeCenter.h"
#include "findEyeCorner.h"



/** Function Headers */
void detectAndDisplay( cv::Mat frame );

int main( ) 
{

  cv::Mat frame;


  if( !face_cascade.load( face_cascade_name ) ){ printf("--(!)Error loading face cascade, please change face_cascade_name in source code.\n"); return -1; };

 createCornerKernels();
 ellipse(skinCrCbHist, cv::Point(113, 155.6), cv::Size(23.4, 15.2),
      43.0, 0.0, 360.0, cv::Scalar(255, 255, 255), -1);


capture = cvCaptureFromCAM( 0 );

if( capture)

{
 while( true ) 

 {

  frame = cvQueryFrame( capture );
  // mirror it
  imshow("Video",frame);
  cv::flip(frame, frame, 1);
  frame.copyTo(debugImage);

  // Apply the classifier to the frame
  if( !frame.empty() ) {
    detectAndDisplay( frame );
  }
  else {
    printf(" --(!) No captured frame -- Break!");
    break;
  }

  imshow(main_window_name,debugImage);

  int c = cv::waitKey(10);
  if( (char)c == 'c' ) { break; }
  if( (char)c == 'f' ) {
    imwrite("frame.png",frame);
  }

  }
  }

releaseCornerKernels();

 return 0;
 }

}

1 个答案:

答案 0 :(得分:0)

尝试使用VideoCapture capture(0);