C++ 为什么OpenCV拒绝cvLoadImage(“string.ext”)而接受cvLoadImage(argv[1])? #包括“cv.h” #包括“highgui.h” #包括 int main(int argc,char*argv[]){ cvNamedWindow(“窗口1”,CV\u窗口自动大小); IplImage*image=0; ->->image=cvLoadImage(argv[1]);

C++ 为什么OpenCV拒绝cvLoadImage(“string.ext”)而接受cvLoadImage(argv[1])? #包括“cv.h” #包括“highgui.h” #包括 int main(int argc,char*argv[]){ cvNamedWindow(“窗口1”,CV\u窗口自动大小); IplImage*image=0; ->->image=cvLoadImage(argv[1]);,c++,c,visual-studio,opencv,C++,C,Visual Studio,Opencv,当您硬编码名称时,是否确定“247.png”在当前工作目录中 在类似的情况下运行程序,查看实际打开的文件(或可能存在的文件I/O错误) 编辑后,向问题添加更多信息(从VS2008运行时出现问题)这几乎肯定是您的问题。VS启动程序的当前目录不是包含“247.png”文件的目录。您能检查一下您的cwd是什么吗 您可以#包括并使用\u getcwd函数查看它是什么。这可能会将您指向罪魁祸首。在项目->属性->配置属性->调试下有一个字段“工作目录”。将其设置为要在其中执行的目录,这将解决此问题。是否尝

当您硬编码名称时,是否确定“247.png”在当前工作目录中

在类似的情况下运行程序,查看实际打开的文件(或可能存在的文件I/O错误)


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

您能检查一下您的
cwd
是什么吗


您可以
#包括
并使用
\u getcwd
函数查看它是什么。这可能会将您指向罪魁祸首。

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

是否尝试打印argv[1]的值以查看实际传递的内容?
#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;
}