星星蛋挞 2023-03-16 18:10 采纳率: 100%
浏览 39
已结题

openCV人脸识别报错

用openCV编写人脸识别项目时,总提示FaceRecognizer没有load以及predict是为什么?
报错代码段是这样的

 Ptr<FaceRecognizer> modelPCA =  EigenFaceRecognizer::create();
        //加载分类器
        modelPCA->load("F:\\SS\\qt\\achieve\\build-test2-Desktop_Qt_6_6_0_MinGW_64_bit-Debug\\MyFacePCAModel.xml");//加载分类器


        if(!face_cascade.load("F:\\SS\\OpenCV\\opencv-4.x\\data\\haarcascades\\haarcascade_frontalface_alt.xml"))
        {
            qDebug("Load face failed!");
            return;
        }

        //检测关于眼睛部位
        //检测
        eye_Classifier.detectMultiScale(cap_gray,eyeRect,1.1,2,0 |CASCADE_SCALE_IMAGE,Size(30,30));
        for(size_t eyeIdx=0 ; eyeIdx<eyeRect.size(); eyeIdx++)
        {
            rectangle(cap,eyeRect[eyeIdx],Scalar(0,0,255));
            //用红色矩形画出检测到的位置
        }

        //检测脸部
        face_cascade.detectMultiScale(cap_gray,faceRect,1.1,2,0 |CASCADE_SCALE_IMAGE,Size(30,30));
        for(size_t i=0;i<faceRect.size();i++)
        {
            rectangle(cap,faceRect[i],Scalar(0,255,0));  //用绿色画出检测到的位置
            Mat faceROI =cap_gray(faceRect[i]);

            int predictPCA=0;
            Mat face_test;
            Point text_lb;

            //改变图像大小
            cv::resize(faceROI,face_test,Size(92,112));
            imshow("frame",face_test);

            predictPCA=modelPCA.predict(face_test);

错误提示这样

img

img

请问这是为什么?

  • 写回答

4条回答 默认 最新

  • 元气少女缘结神 2023-03-16 20:41
    关注

    1,因为你load函数用错了,opencv对这个load函数的参数要求是const string或FileStorage类型,而你给的是const char * ,类型不匹配自然报错。
    2,predict函数也一样是用法不对,但你没给出结构体内的定义,所以我也看不到。自己跟上一条这样去分析找下吧。这两个问题都是用法不正确。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月26日
  • 已采纳回答 3月18日
  • 创建了问题 3月16日

悬赏问题

  • ¥15 envi深度学习模块错误原因
  • ¥15 孟德尔随机化混杂因素
  • ¥15 关于react-hook组件用函数控制是否渲染的及时性问题。
  • ¥50 Linux下的软件,要做模块化拆分。进程间通信是否有开源框架可以借用?
  • ¥100 修改原有的MYSQL存储代码,在最右边添加多列数据
  • ¥20 Open Interpreter 使用时报错: still has pending operation at deallocation, the process may crash
  • ¥15 qt中链接动态链接库,调用其中的函数,该函数的参数需要传入回调函数,自己创建的回调函数无法作为参数传递进去
  • ¥15 matlab svm二分类代码问题
  • ¥40 求一款能支持ios15以上的屏蔽越狱插件。比较好用的
  • ¥15 C++ QT对比内存字符(形式不定)