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

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 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”