【问题标题】:OpenCV - cvLoadImage() can NOT load JPG imageOpenCV - cvLoadImage() 无法加载 JPG 图像
【发布时间】:2013-05-13 00:13:46
【问题描述】:

我是 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-

【问题讨论】:

  • 我已经尝试过这种情况但仍然无法正常工作。但如果我使用其他类型的文件,例如 PNG,一切都会正常工作。
  • 你应该给我们一些我们可以理解的情况。例如,您可以给我们您正在处理的 jpg 图像。我认为您的 jpg 图像可能有问题。您是否尝试过来自不同来源的不同 jpg?另一件事是 opencv 安装错误的可能性很小。

标签: visual-studio-2008 opencv jpeg


【解决方案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;
}

【讨论】:

  • 感谢回答,我之前已经尝试过您的解决方案,但不适用于 JPG 类型文件,但适用于其他类型(例如 PNG)。甚至我也尝试过其他组合,例如“C:/hello.jpg”或将“hello.jpg”放在我的工作项目目录中,然后直接调用。但还是不行。
  • 如果您能够加载其他格式然后 jpg 那么您尝试打开的图像不是一个好的副本,或者您的 opencv 二进制文件有问题。尝试在要使用它的系统上从源代码重新编译 opencv。
  • 并且也使用最新的opencv版本,因为之前版本中的大部分错误都在新版本中得到修复
  • 感谢您的帮助,在我重新编译我的 openCV 后它现在可以正常工作了。
猜你喜欢
  • 2023-03-28
  • 2010-11-28
  • 2022-07-26
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 1970-01-01
  • 2010-10-28
相关资源
最近更新 更多