为什么OpenCV拒绝cvLoadImage(“string.ext”),但接受cvLoadImage(argv [1])?

时间:2009-01-15 01:11:00

标签: c++ c visual-studio opencv

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

这是为什么?我有点厌倦了前进而没有让它失望。

3 个答案:

答案 0 :(得分:2)

当您将名称硬编码时,您确定“247.png”位于当前工作目录中吗?

Process Monitor之类的程序下运行程序,以查看实际打开的文件(或可能存在的文件I / O错误)。

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

答案 1 :(得分:0)

您可以查看cwd的内容吗?

您可以#include <direct.h>并使用_getcwd功能查看它是什么。这可能会让你找到罪魁祸首。

答案 2 :(得分:0)

在项目 - &gt;属性 - &gt;配置属性 - &gt;调试下,有一个字段“工作目录”。将其设置为您要执行的目录,这应解决问题。