0
#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,它会失败。如果我从命令提示符构建并运行,它可以工作。

为什么是这样?我有点厌倦了继续前进而不把它弄下来。

4

3 回答 3

2

当您对名称进行硬编码时,您确定“247.png”在当前工作目录中吗?

在进程监视器之类的程序下运行程序,以查看真正打开的文件(或可能存在哪些文件 I/O 错误)。

在您编辑以向问题添加更多信息之后(从 VS2008 运行时会出现问题),这几乎肯定是您的问题。VS启动程序的当前目录不是“247.png”文件所在的目录。

于 2009-01-15T01:26:37.117 回答
0

你能检查一下你cwd是什么吗?

您可以#include <direct.h>使用该_getcwd功能来查看它是什么。这可能会指出你的罪魁祸首。

于 2009-01-15T14:54:09.220 回答
0

在 Project->Properties->Configuration Properties->Debugging 下有一个“工作目录”字段。将其设置为您要在其中执行的目录,这应该可以解决问题。

于 2009-02-23T03:02:25.710 回答