2

我是 OpenCV 的新手,想问一个关于加载图像的基本问题。

我在 windows7 上使用 OpenCV2.0 和 Visual Studio 2008。

根据我的阅读和理解,有“cvLoadImage()”函数可以在 OpenCV 中加载图像。

我目前正在尝试非常基本的程序来在 Windows 中加载和显示图片。

这是我的代码:

#include "stdafx.h"
#include <cv.h>
#include <highgui.h>

int _tmain(int argc, _TCHAR* argv[])
{
  IplImage* img = cvLoadImage("C:/hello.jpg");

  if (!img)
    printf("Image can NOT Load!!!\n");

  cvNamedWindow("myfirstwindow");
  cvShowImage("myfirstwindow", img);

  cvWaitKey(0);
  cvReleaseImage(&img);

return 0;
}

结果是我可以得到灰色的窗口,但没有显示图像。我尝试过其他解决方案,例如将图像放在项目文件夹中然后调用它,但仍然有相同的结果。

但是,当我尝试使用其他类型的图像(例如 .png)时,它会成功加载。

有没有人以前有同样的问题或知道解决这个问题的任何解决方案?

谢谢,

-jwiil-

4

1 回答 1

1

这是因为您为程序提供的路径实际上并没有指向任何东西。

如果您将图像放在同一个文件夹中,那么您需要调用

cvLoadImage("hello.jpg");

如果图像在其他任何地方,那么正如@vasile 评论的那样,您需要调用

cvLoadImage("C:\\hello.jpg");

我还编辑了您的代码,因此如果图像未正确加载,它将退出

#include "stdafx.h"
#include <cv.h>
#include <highgui.h>

int _tmain(int argc, _TCHAR* argv[])
{
  IplImage* img = cvLoadImage("C:/hello.jpg");

  if (!img)
  {
    printf("Image can NOT Load!!!\n");
    return 1;
  }

  cvNamedWindow("myfirstwindow");
  cvShowImage("myfirstwindow", img);

  cvWaitKey(0);
  cvReleaseImage(&img);

return 0;
}
于 2012-08-14T15:51:15.467 回答