opencvmodulescoresrcpersistence.cpp:2697:错误:(-27)cvOpenF

opencvmodulescoresrcpersistence.cpp:2697: error: (-27) NULL or empty buffer in function cvOpenFileStorage

本文关键字:cvOpenF 错误 cpp 2697 opencvmodulescoresrcpersistence      更新时间:2023-10-16

我试图运行一个面部检测应用程序,我得到以下错误:

Unexpected Standard exception from MEX file.
What() is:........opencvmodulescoresrcpersistence.cpp:2697: error: (-27)
NULL or empty buffer in function cvOpenFileStorage

如果使用的是haarcascade_frontalface_default.xml,请检查xml文件的内容。

前3行应为:

<?xml version="1.0"?>
<!--
    Stump-based 24x24 discrete(?) adaboost frontal face detector.

我无意中下载了链接到haarcascade_frontalface_default.xml文件而不是xml本身的html,并得到了与您相同的错误。

您应该提供一些代码和信息。然而,该错误表明它无法访问haarcascade文件。我建议你一定要准备好xml文件。在与代码相同的文件夹中(例如"ViewController.mm")并检查权限。另外,假设您正在使用Objective-c或swift:

1-检查文件是否在你的Xcode项目中;如果是

2-检查它是否包含在你选择的目标下面的'Copy Bundle Resources'阶段(在正常Xcode窗口布局左边的项目树视图中),如果是,

3-查看生成的应用程序包(找到您的产品,右键单击,选择"在Finder中显示",从Finder中右键单击应用程序并选择"显示包内容",然后在其中查找您的文件),以确保它在那里。

我也遇到了同样的问题,然后我找出了问题所在

首先

添加文件haarcascade_frontalface_default.xml到xcode项目

确保在添加XML文件时使用下面的选项:

  1. 目的地:复制项目,如果需要[check]
  2. 添加文件夹:Create Folder References [check]
  3. 添加到目标:您的项目目标[check]

第二

在你的包装。将以下代码添加到obj-c函数中:

const NSString* cascadePath = [[NSBundle mainBundle]pathForResource:@"haarcascade_frontalface_default" ofType:@"xml"];

或者如果你想加载XML文件,使用下面的代码:

cv::CascadeClassifier classifier;
const NSString* cascadePath = [[NSBundle mainBundle]pathForResource:@"haarcascade_frontalface_default" ofType:@"xml"];
classifier.load([cascadePath UTF8String]);

这实际上解决了我的问题,无论如何这个问题已经被质疑了很长一段时间,但我希望有人面对这个问题可以来这个答案,并帮助他们解决他们的问题,像我一样,欢呼。