我在此代码中遇到haarcascade frontalface
检测面的问题。当我编译时,有像这样的
代码detectMultiScale
出错。以下是C ++中代码的片段:
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <vector>
#include <iostream>
#include <stdio.h>
using namespace std;
using namespace cv;
int main(int argc, const char** argv)
{
CascadeClassifier face_cascade;
face_cascade.load("haarcascade_frontalface_default.xml");
VideoCapture captureDevice;
captureDevice.open(0);
Mat captureFrame;
Mat grayscaleFrame;
namedWindow("Result Capture", 1);
while (true)
{
captureDevice>>captureFrame;
cvtColor(captureFrame, grayscaleFrame, CV_BGR2GRAY);
equalizeHist(grayscaleFrame, grayscaleFrame);
std::vector<Rect> faces;
CascadeClassifier::CascadeClassifier("haarcascade_frontalface_default.xml").detectMultiScale(grayscaleFrame, faces, 1.1, 2, 0, Size(30, 30), Size(130, 130));
for (int i = 0; i < faces.size(); i++)
{
Point pt1(faces[i].x + faces[i].width, faces[i].y + faces[i].height);
Point pt2(faces[i].x, faces[i].y);
rectangle(captureFrame, pt1, pt2, cvScalar(0, 255, 0, 0), 1, 8, 0);
}
imshow("Resutl Capture", captureFrame);
waitKey(33);
}
}