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

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 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同