imread()停止在Octave上工作

时间:2014-01-06 18:18:32

标签: image octave graphicsmagick

我尝试使用Google搜索,似乎没有其他人遇到过这种错误。

我在Ubuntu 12.04上使用Octave 3.6.1。我一直在使用imread()函数读取图像很长一段时间,但就在昨天它开始抛出这个错误:

octave:5> I = imread('example.jpg');
error: imread: invalid image file: Magick++ exception: Magick: Unable to open file (tures/example.jpg) reported by coders/jpeg.c:955 (ReadJPEGImage)
error: called from:
error:   /usr/share/octave/3.6.1/m/image/imread.m at line 74, column 7

如果我尝试读取PNG,我会收到类似的错误:

octave:5> I = imread('example.png');
error: imread: invalid image file: Magick++ exception: Magick: Unable to open file (tures/example.png) reported by coders/png.c:2790 (ReadPNGImage)
error: called from:
error:   /usr/share/octave/3.6.1/m/image/imread.m at line 74, column 7

有人知道发生了什么吗?如何解决这个问题?

非常感谢!

2 个答案:

答案 0 :(得分:1)

Octave使用GraphicsMagick(或ImageMagick)来处理图像的读写。 GraphicsMagick不直接处理图像的读取和写入,它是单个API下许多格式库的包装。

当你构建GraphicsMagick时,它会检查你的系统是否有可用的库,并禁用/激活那些存在的格式。您可能自己构建了GraphicsMagick而没有开发库libpng和libjpeg。在Ubuntu中,我相信它们位于包libpng12-devlibjpeg8-dev中。要么使用系统附带的GraphicsMagick库,要么自己构建它,请参阅Octave wiki中的说明。

要确认这确实是您的问题,请运行gm -version并检查这些格式是否已激活。例如,我系统中的输出显示:

Feature Support:
  Thread Safe              yes
  Large Files (> 32 bit)   yes
  Large Memory (> 32 bit)  no
  BZIP                     yes
  DPS                      no
  FlashPix                 no
  FreeType                 yes
  Ghostscript (Library)    no
  JBIG                     yes
  JPEG-2000                yes
  JPEG                     yes
  Little CMS               yes
  Loadable Modules         no
  OpenMP                   yes (201107)
  PNG                      yes
  TIFF                     yes
  TRIO                     no
  UMEM                     no
  WMF                      yes
  X11                      yes
  XML                      yes
  ZLIB                     yes

答案 1 :(得分:1)

我在3.6.4 Windows 8.1遇到了同样的问题,对我来说简单的解决方法就是这样:

IMAGE_PATH = ('C:\Users\...'); 

存储图像

Image = file_in_path(IMAGE_PATH, 'image.jpg');

当然最好修复实际功能,但现在它已经足够好了。

希望这有帮助。