#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,它会失败。如果我从命令提示符构建并运行,它就可以工作。
这是为什么?我有点厌倦了在不记下这一点的情况下继续前进。
最佳答案
当您对名称进行硬编码时,您确定“247.png”在当前工作目录中吗?
在 Process Monitor 下运行程序查看真正打开的文件(或可能存在的文件 I/O 错误)。
在您编辑以向问题添加更多信息后(从 VS2008 运行时会出现问题)这几乎可以肯定是您的问题。 VS启动程序的当前目录不是“247.png”文件所在的目录。
关于c++ - 为什么 OpenCV 拒绝 cvLoadImage ("string.ext"),但接受 cvLoadImage(argv[1])?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/445295/