#include "cv.h"
#include "highgui.h"
#include <stdio.h>
int main(int argc, char* argv[]){
cvNamedWindow("Window1", CV_WINDOW_AUTOSIZE);
IplImage* image = 0;
->->image = cvLoadImage(argv[1]);<-<-
if(!image) printf("Unable to load image!");
cvShowImage("Window1", image);
char c = cvWaitKey(0);
cvReleaseImage(&image);
cvDestroyWindow("Window1");
return 0;
}
如果我用cvLoadImage("247.png")
替换指示的行,我会得到一个空白窗口,图像保持等于零
如果我运行exe并以247.png作为参数,它就是花花公子。如果我将“247.png”放入代码并构建并运行Visual Studio 2008,它就会失败。如果我从命令提示符构建并运行它,它就可以工作。
这是为什么?我有点厌倦了前进而没有让它失望。
答案 0 :(得分:2)
当您将名称硬编码时,您确定“247.png”位于当前工作目录中吗?
在Process Monitor之类的程序下运行程序,以查看实际打开的文件(或可能存在的文件I / O错误)。
在您编辑后添加更多信息(从VS2008运行时出现问题),这几乎肯定是您的问题。 VS启动程序的当前目录不是具有“247.png”文件的目录。
答案 1 :(得分:0)
您可以查看cwd
的内容吗?
您可以#include <direct.h>
并使用_getcwd
功能查看它是什么。这可能会让你找到罪魁祸首。
答案 2 :(得分:0)
在项目 - &gt;属性 - &gt;配置属性 - &gt;调试下,有一个字段“工作目录”。将其设置为您要执行的目录,这应解决问题。