对于opencv使用cvLoad加载分类器报错的解决

来源:互联网 发布:批处理调用软件 编辑:程序博客网 时间:2024/05/27 02:31


本人接触C++的时间不长,只会写一些简单的程序。最近由于毕业设计设计到人脸识别部分。使用VS2013去开发,用的是opencv2.4.11版本去完成功能。


老师给了个简单的例子先学着,那段程序在网上有很多,只要一艘人脸 识别程序几乎就是那段程序了。

我把opencv的分类器路径弄上程序后,运行是出错的。但是把路径乱改(就是不给分类器的路径),就会成功显示出图片,但是是没有经过人脸识别的图片,就单纯的原图。

调试程序后,很明显地得出是下面这小段程序的 cvLoad 问题。无法成功加载分类器haarcascade_frontalface_alt.xml。


const char *pstrCascadeFileName = "D:\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml";
 CvHaarClassifierCascade *pHaarCascade = NULL;
 pHaarCascade = (CvHaarClassifierCascade*)cvLoad(pstrCascadeFileName);


在网上有很多人也遇到这个问题,各种办法也有。但是都是无法解决的。

弄了2天,后来得到了个解决的办法。

下载了个opencv2.4.10版本,把配置全部换成2.4.10版本的。最后运行,完美成功~

记得程序的路径也要相应改了。配置要彻底改成2.4.10

这个问题似乎因为2.4.11版本的haarcascade_frontalface_alt.xml不稳定或者别的问题才会报错,我2.4.11运行其他的图像处理是不会有问题的。

若是单纯把haarcascade_frontalface_alt.xml替换了,也是不能成功的。因为haarcascade_frontalface_alt.xml的版本不同是不行的。所以要整个opencv换了才行。


本人也算新手,或许还有别的办法可以解决。我发表这个是为了遇到这个问题的人能试试,或许就能解决了呢。毕竟自己经历过遇到问题找不到帮助的痛苦。希望别人能尽量减少这样的过程。

1 0