-3

我正在训练opencv 中的教程

编译时没有错误。

我知道本教程的代码是针对 opencv2.4 的,并且我已经更改了 cvquery 和 videoframe 的编码。

我的输出是这样的

.

我的网络摄像头工作正常,但在我的结果中没有显示任何内容。

4

1 回答 1

0

如果您希望使用 HaarCascades 执行人脸检测,可以使用以下代码:

  #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;
     CascadeClassifier facecascade;

     int main()
     {
       Mat frame;
      facecascade.load("haarcascade_frontalface_alt.xml");
      if(facecascade.empty())
      {
        cout<<"Error";

      }

       VideoCapture cap(0);
       int i=0,j=0,k=0;
         while(1)
         {
          cap>>frame;  
          Mat frame_gray;
         cvtColor(frame,frame_gray,CV_BGR2GRAY);
         vector<Rect>faces;

         facecascade.detectMultiScale(frame_gray,faces,1.1,2,0|CV_HAAR_SCALE_IMAGE,Size(70,70));
         if(faces.size()>0)
         {

         for(i=0;i<faces.size();i++)
            {
            rectangle(frame_gray,faces[i],Scalar(200,200,250),2,8,0);

            }
         char no[5];
         sprintf(no,"No. of faces detected = %d",int(faces.size()));
         putText(frame_gray,no,Point(10,30),FONT_HERSHEY_TRIPLEX,1,Scalar(255,255,255),1);
            imshow("out",frame_gray);
          char c= waitKey(5);
           if(c=='b')
           break;
         }
            return 0;
       }
于 2016-04-05T03:59:30.883 回答