我尝试使用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
有人知道发生了什么吗?如何解决这个问题?
非常感谢!
答案 0 :(得分:1)
Octave使用GraphicsMagick(或ImageMagick)来处理图像的读写。 GraphicsMagick不直接处理图像的读取和写入,它是单个API下许多格式库的包装。
当你构建GraphicsMagick时,它会检查你的系统是否有可用的库,并禁用/激活那些存在的格式。您可能自己构建了GraphicsMagick而没有开发库libpng和libjpeg。在Ubuntu中,我相信它们位于包libpng12-dev
和libjpeg8-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');
当然最好修复实际功能,但现在它已经足够好了。
希望这有帮助。