进入detectMultiScale函数就卡死

进入detectMultiScale函数就卡死

下午还能运行 晚上就不行了

比对的是自己训练的模型

训练模型没有报错

#include 
#include 

const char* face_cascade_name = "D:/opencv/image/cascade.xml";

void faceRecongize(cv::CascadeClassifier faceCascade, cv::Mat frame);

int main() {
    cv::VideoCapture* videoCap = new cv::VideoCapture;

    cv::CascadeClassifier faceCascade;

    // 加载苹果分类器文件
    if (!faceCascade.load(face_cascade_name)) {
        std::cout << "load face_cascade_name failed. " << std::endl;
        return -1;
    }
    std::cout << "load face_cascade_name" << std::endl;
    // 打开摄像机
    videoCap->open(0);


    if (!videoCap->isOpened()) {
        videoCap->release();
        std::cout << "open camera failed" << std::endl;
        return -1;
    }

    std::cout << "open camera success" << std::endl;

    while (1) {
        cv::Mat frame;
        //读取视频帧
        videoCap->read(frame);

        if (frame.empty()) {
            videoCap->release();
            return -1;
        }
        std::cout << "读取视频帧成功" << std::endl;
        
        //进行苹果识别
        
        faceRecongize(faceCascade, frame);
        

        //窗口进行展示
        imshow("face", frame);

        //等待回车键按下退出程序
        if (cv::waitKey(1) == 13) {
            cv::destroyAllWindows();
            return 0;
        }
    }

    system("pause");
    return 0;
}

void faceRecongize(cv::CascadeClassifier faceCascade, cv::Mat frame) {
    
    std::vector faces;
    std::cout << "开始检测" << std::endl;
    // 检测
    if(cv::waitKey(1) == 32) faceCascade.detectMultiScale(frame, faces, 1.1, 2, 0 | cv::CASCADE_SCALE_IMAGE, cv::Size(100, 100));
    std::cout << "检测成功" << std::endl;
    for (int i = 0; i < faces.size(); i++) {
    //for (int i = 0; i < 1; i++) {

        // 用椭圆画出检测部分
        cv::Point center(faces[i].x + faces[i].width / 2, faces[i].y + faces[i].height / 2);
        ellipse(frame, center, cv::Size(faces[i].width / 2, faces[i].height / 2), 0, 0, 360, cv::Scalar(255, 0, 255), 4, 8, 0);

        cv::Mat faceROI = frame(faces[i]);
        std::vector eyes;



        // 检测上方区域写字进行标识
        cv::Point centerText(faces[i].x + faces[i].width / 2 - 40, faces[i].y - 20);
        cv::putText(frame, "apple", centerText, cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(0, 0, 255), 2);


    }
}