c++ - 为什么 OpenCV 拒绝 cvLoadImage ("string.ext"),但接受 cvLoadImage(argv[1])?

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

这是为什么?我有点厌倦了在不记下这一点的情况下继续前进。

最佳答案

当您对名称进行硬编码时,您确定“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/

相关文章:

c++ - MPI:获取给定通信器中所有处理器的排名

c++ - powershell 使用结构类型参数调用 C++ dll 的导出函数

c - 在我的possion方程代码中集体中止

c - 如何使用 CopyFile 函数复制多个文件?

c++ - VS 2013 : console output not corresponding to open program

c# - 调用 native 代码的多线程托管应用程序

c++ - 匹配 Google Test 的 ASSERT_DEATH 正则表达式中的行尾

iphone - 在 Objective-C 中以编程方式计算 IRR(内部 yield )和 NPV

c++ - VIsual Studio 2019 Inactive 代码未灰显

visual-studio - 是什么导致 Visual Studio 无法正确加载程序集?