编译链接都没有问题,但运行时为什么cvLoad()总是失败呢?返回值总是NULL。相应的xml文件和图片文件我都已经保存在项目所在目录下了。
#include<cxcore.h>
#include<highgui.h>
#include<cv.h>
int main()
{
const char *cascadeName="haarcascade_frontalface_alt2.xml";
CvHaarClassifierCascade *cascade=(CvHaarClassifierCascade*)cvLoad(cascadeName,0,0,0);
if(cascade)
return 0;
else
return 1;
}
XML文件的路径应该用绝对路径,试试吧
"D:\\Program Files\\OpenCV\\data\\haarcascades\\haarcascade_frontalface_alt2.xml"
即可以!但是问题是为什么要加 \\ ,而绝对路径不是只要 \ 就行了吗?比较好奇。
绝对以及相对路径(转):
一、基本概念
1、相对路径-顾名思义,相对路径就是相对于当前文件的路径。网页中一般表示路径使用这个方法。
2、绝对路径-绝对路径就是你的主页上的文件或目录在硬盘上真正的路径。绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,比如,你的Perl 程序是存放在 c:/apache/cgi-bin 下的,那么 c:/apache/cgi-bin就是cgi-bin目录的绝对路径
在网络中,以http开头的链接都是绝对路径,绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,绝对路径一般在CGI程序的路径配置中经常用到,而在制作网页中实际很少用到。
二、相对路径使用的特殊符号
以下为建立路径所使用的几个特殊符号,及其所代表的意义。
"./":代表目前所在的目录。
"../":代表上一层目录。
以"/"开头:代表根目录。
根目录下有Site1和Image/Image.jpg,Site1下有Page1.html文件和Site2文件夹。Site2下有Page2.html和Page2Image.jpg图片文件。
1、文件在当前目录
Page2.html访问Page2Image.jpg
<img src=”./Page2Image.jpg”>或者<img src=”Page2Image. jpg”>
2、文件在上一层目录
Page1.html访问Image下的Image.jpg
<img src=”../Image/Image.jpg”>
Page2.html访问Image下的Image.jpg
<img src=”../../Image/Image.jpg”>
3、文件在下一层目录
Page1.html访问Site2文件夹下的Page2Image.jpg
<img src=” ./Site2/Image.jpg”><img src=” Site2/Image.jpg”>
4、根目录表示法,任何页面访问Image下的Image.jpg图片
<img src=”/Image/Image.jpg”>