2009-01-15 37 views
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")更换所指示的路线,我得到一个空白的窗口和形象仍然等于零为什么OpenCV拒绝cvLoadImage(“string.ext”),但接受cvLoadImage(argv [1])?

如果我运行exe文件,并给它247.png作为一个参数,它只是花花公子。如果我将“247.png”放入代码并构建并运行Visual Studio 2008,它将失败。如果我从命令提示符构建并运行,它将起作用。

这是为什么?我没有感觉到这一点,所以对前进感到厌倦。

+0

您是否尝试过打印出argv [1]的值来查看实际得到的结果? – freespace 2009-01-15 14:03:28

回答

0

在项目 - >属性 - >配置属性 - >调试中有一个字段“工作目录”。将其设置为您要执行的目录,并解决问题。

2

你确定当你的名字是硬编码时,“247.png”在当前工作目录下吗?

在类似Process Monitor之类的地方运行程序,查看真正打开了哪个文件(或者可能存在哪些文件I/O错误)。

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

0

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

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

相关问题