Octave 倍频程可以';t使用GraphicsMagick读取文件

Octave 倍频程可以';t使用GraphicsMagick读取文件,octave,graphicsmagick,Octave,Graphicsmagick,我正在尝试在OS X上使用GraphicsMagick 1.3.27(通过brew)在Octave 4.2.1中加载图像。错误如下: >> img = imread('./myimg.jpg') error: Magick++ exception: octave-cli-4.2: No decode delegate for this image format (<path to myimg.jpg>) reported by magick/constitute.c:1

我正在尝试在OS X上使用GraphicsMagick 1.3.27(通过brew)在Octave 4.2.1中加载图像。错误如下:

>> img = imread('./myimg.jpg')
error: Magick++ exception: octave-cli-4.2: No decode delegate for this 
image format (<path to myimg.jpg>) reported by magick/constitute.c:1535 (ReadImage)
 error: called from
    __imread__ at line 80 column 10
    imageIO at line 117 column 26
    imread at line 106 column 30

尝试加载png文件会导致相同的错误。直接从命令行使用
gm
效果很好。

您的倍频程和gm安装可能与不同的GraphicsMagick库相链接,因此
gm-version
的输出可能不准确。您可能应该从八度音阶本身内部进行检查,如下所示:

octave:1> imformats 
Extension | isa | Info | Read | Write | Alpha | Description
----------+-----+------+------+-------+-------+------------
bmp       | yes | yes  | yes  | yes   | yes   | Microsoft Windows bitmap image
cur       | yes | yes  | yes  | no    | yes   | Microsoft Cursor Icon
gif       | yes | yes  | yes  | yes   | yes   | CompuServe graphics interchange format
ico       | yes | yes  | yes  | no    | yes   | Microsoft Icon
jbg       | yes | yes  | yes  | yes   | yes   | Joint Bi-level Image experts Group interchange format
jbig      | yes | yes  | yes  | yes   | yes   | Joint Bi-level Image experts Group interchange format
jpg, jpeg | yes | yes  | yes  | yes   | yes   | Joint Photographic Experts Group JFIF format
pbm       | yes | yes  | yes  | yes   | yes   | Portable bitmap format (black/white)
pcx       | yes | yes  | yes  | yes   | yes   | ZSoft IBM PC Paintbrush
pgm       | yes | yes  | yes  | yes   | yes   | Portable graymap format (gray scale)
png       | yes | yes  | yes  | yes   | yes   | Portable Network Graphics
pnm       | yes | yes  | yes  | yes   | yes   | Portable anymap
ppm       | yes | yes  | yes  | yes   | yes   | Portable pixmap format (color)
ras       | yes | yes  | yes  | yes   | yes   | SUN Rasterfile
tga, tpic | yes | yes  | yes  | yes   | yes   | Truevision Targa image
tif, tiff | yes | yes  | yes  | yes   | yes   | Tagged Image File Format
xbm       | yes | yes  | yes  | yes   | yes   | X Windows system bitmap (black/white)
xpm       | yes | yes  | yes  | yes   | yes   | X Windows system pixmap (color)
xwd       | yes | yes  | yes  | yes   | yes   | X Windows system window dump (color)
您还可以通过
ldd
(因为您使用的是Mac,您可能没有
ldd
,但google告诉我
otool-L
是Mac的解决方案)检查Octave实际使用的库。就我而言,我知道它们是一样的:

$ ldd /usr/local/lib/octave/5.0.0/liboctinterp.so | grep Magick
    libGraphicsMagick++-Q16.so.12 => /lib/libGraphicsMagick++-Q16.so.12 (0x00007f858a896000)
    libGraphicsMagick-Q16.so.3 => /lib/libGraphicsMagick-Q16.so.3 (0x00007f858a52e000)
$ ldd /usr/bin/gm | grep Magick
    libGraphicsMagick-Q16.so.3 => /lib/libGraphicsMagick-Q16.so.3 (0x00007f5041f66000)
一旦知道Octave用于GraphicsMagick的实际库,就可以检查该库是否与libjpeg链接:

$ ldd /lib/libGraphicsMagick++-Q16.so.12 | grep jpeg
    libjpeg.so.62 => /lib/x86_64-linux-gnu/libjpeg.so.62 (0x00007f63e910c000)
您还可以从octave配置中获得一些提示:

octave:1> __octave_config_info__.build_environment.MAGICK_CPPFLAGS
ans = -I/usr/include/GraphicsMagick
octave:2> __octave_config_info__.build_environment.MAGICK_LDFLAGS
ans = 
octave:3> __octave_config_info__.build_environment.MAGICK_LIBS
ans = -lGraphicsMagick++ -lGraphicsMagick

您的倍频程和gm安装可能与不同的GraphicsMagick库相链接,因此
gm-version
的输出可能不准确。您可能应该从八度音阶本身内部进行检查,如下所示:

octave:1> imformats 
Extension | isa | Info | Read | Write | Alpha | Description
----------+-----+------+------+-------+-------+------------
bmp       | yes | yes  | yes  | yes   | yes   | Microsoft Windows bitmap image
cur       | yes | yes  | yes  | no    | yes   | Microsoft Cursor Icon
gif       | yes | yes  | yes  | yes   | yes   | CompuServe graphics interchange format
ico       | yes | yes  | yes  | no    | yes   | Microsoft Icon
jbg       | yes | yes  | yes  | yes   | yes   | Joint Bi-level Image experts Group interchange format
jbig      | yes | yes  | yes  | yes   | yes   | Joint Bi-level Image experts Group interchange format
jpg, jpeg | yes | yes  | yes  | yes   | yes   | Joint Photographic Experts Group JFIF format
pbm       | yes | yes  | yes  | yes   | yes   | Portable bitmap format (black/white)
pcx       | yes | yes  | yes  | yes   | yes   | ZSoft IBM PC Paintbrush
pgm       | yes | yes  | yes  | yes   | yes   | Portable graymap format (gray scale)
png       | yes | yes  | yes  | yes   | yes   | Portable Network Graphics
pnm       | yes | yes  | yes  | yes   | yes   | Portable anymap
ppm       | yes | yes  | yes  | yes   | yes   | Portable pixmap format (color)
ras       | yes | yes  | yes  | yes   | yes   | SUN Rasterfile
tga, tpic | yes | yes  | yes  | yes   | yes   | Truevision Targa image
tif, tiff | yes | yes  | yes  | yes   | yes   | Tagged Image File Format
xbm       | yes | yes  | yes  | yes   | yes   | X Windows system bitmap (black/white)
xpm       | yes | yes  | yes  | yes   | yes   | X Windows system pixmap (color)
xwd       | yes | yes  | yes  | yes   | yes   | X Windows system window dump (color)
您还可以通过
ldd
(因为您使用的是Mac,您可能没有
ldd
,但google告诉我
otool-L
是Mac的解决方案)检查Octave实际使用的库。就我而言,我知道它们是一样的:

$ ldd /usr/local/lib/octave/5.0.0/liboctinterp.so | grep Magick
    libGraphicsMagick++-Q16.so.12 => /lib/libGraphicsMagick++-Q16.so.12 (0x00007f858a896000)
    libGraphicsMagick-Q16.so.3 => /lib/libGraphicsMagick-Q16.so.3 (0x00007f858a52e000)
$ ldd /usr/bin/gm | grep Magick
    libGraphicsMagick-Q16.so.3 => /lib/libGraphicsMagick-Q16.so.3 (0x00007f5041f66000)
一旦知道Octave用于GraphicsMagick的实际库,就可以检查该库是否与libjpeg链接:

$ ldd /lib/libGraphicsMagick++-Q16.so.12 | grep jpeg
    libjpeg.so.62 => /lib/x86_64-linux-gnu/libjpeg.so.62 (0x00007f63e910c000)
您还可以从octave配置中获得一些提示:

octave:1> __octave_config_info__.build_environment.MAGICK_CPPFLAGS
ans = -I/usr/include/GraphicsMagick
octave:2> __octave_config_info__.build_environment.MAGICK_LDFLAGS
ans = 
octave:3> __octave_config_info__.build_environment.MAGICK_LIBS
ans = -lGraphicsMagick++ -lGraphicsMagick

您确定Octave使用的
gm
版本与您在终端命令行中使用的版本相同吗?您确定Octave使用的
gm
版本与您在终端命令行中使用的版本相同吗?