opencv detectMultiScale问题导致程序过早退出

时间:2018-11-05 20:17:05

标签: c++ opencv face-detection face

我正在尝试使用openCV编写简单的面部检测代码。程序运行并且网络摄像头好像将要打开一样亮起,但是大约5秒钟后程序关闭,然后框架窗口甚至打开。

Command Line Picture

起初我以为我没有正确加载xml文件,但是后来我注意到只有在包含级联分类器行时才会发生这种情况:

face_cascade.detectMultiScale(frame_gray,faces,1.1,3,0 | CASCADE_SCALE_IMAGE,Size(30,30));

当我注释掉这一行时,就网络摄像头窗口打开而言,该程序似乎运行良好。我相信我已经正确填写了参数,所以我不确定为什么会有这个问题。

这是我的代码:

#include <iostream>
#include <string>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/core/core.hpp"
#include "opencv2/opencv.hpp"
#include "opencv2/objdetect/objdetect.hpp"

using namespace cv;
using namespace std;

//Global Variables
String face_cascade_name = "C:/Users/Administrator/Desktop/mirrorOS/External 
Libraries/OpenCV/etc/haarcascades/haarcascade_frontalface_alt.xml";

CascadeClassifier face_cascade;


int main() {

    face_cascade.load(face_cascade_name);
    if (face_cascade.load(face_cascade_name)) {

        cout << "Success" << endl;
    }

    Mat webcam; //create a mat object stores the current frame
    Mat frame_gray; //gray frame


    VideoCapture cap(0); //captures video from webcam
    if (!cap.isOpened()) {
        return -1;
    }

    while (cap.read(webcam)) {

        cvtColor(webcam, frame_gray, COLOR_BGR2GRAY);
        equalizeHist(frame_gray, frame_gray);

        vector<Rect> faces;

        face_cascade.detectMultiScale(frame_gray, faces, 1.1, 3,0 | CASCADE_SCALE_IMAGE, Size(30, 30));

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


            Rect face_i = faces[i];
            rectangle(webcam, face_i, CV_RGB(0, 255, 0), 3);

        }

        imshow("Webcam", webcam);
        waitKey(1);
        destroyAllWindows();
    }    

    return 0;
}

我已经尝试更改了cascadeClassifier的参数值,但似乎没有任何效果,因此我不确定自己在做什么错。


仔细检查调试器,我在此行有一个未处理的异常:

  

faceRecognition.exe中0x00007FFE3488BBF2(opencv_world343d.dll)的未处理异常:0xC0000005:访问冲突读取位置0x0000022B0608F000。

0 个答案:

没有答案