Octave的imread函数

8
我在Ubuntu 14.04机器上安装了最新版本的Octave。但是,当我尝试运行imread命令时,它显示了以下错误消息:
octave:12> imread('newfile.png')
error: imread: invalid image file: /usr/lib/x86_64-linux-gnu/octave/3.8.1/oct/x86_64-pc-linux-gnu/__magick_read__.oct: failed to load: /usr/lib/x86_64-linux-gnu/octave/3.8.1/oct/x86_64-pc-linux-gnu/__magick_read__.oct: undefined symbol: _ZN6Magick5ColorC1Ehhh
error: called from:
error:   /usr/share/octave/3.8.1/m/image/private/__imread__.m at line 181, column 7
error:   /usr/share/octave/3.8.1/m/image/private/imageIO.m at line 66, column 26
error:   /usr/share/octave/3.8.1/m/image/imread.m at line 107, column 30

有人可以建议如何解决这个问题吗?

谢谢!


请从Ubuntu软件源中安装ImageMagick,然后再次尝试以查看问题是否已解决。 - juliohm
2个回答

4

以下步骤对我有效 [作者:Christoffer Cronström (hymyly)]:

安装构建octave所需的开发包。

sudo apt-get build-dep octave

获取官方源代码包。请在一个干净的目录中执行此操作,因为它会被污染。

cd ~/some/suitable/directory
apt-get source octave

开始构建。我大约花了一个小时。

cd octave-3.8.2
dpkg-buildpackage

您可以从构建目录中运行它:

./run-octave

最好安装它,最好是在官方Octave之上进行安装:

cd ..
sudo dpkg --install octave_3.8.2-4_amd64.deb

来源: https://bugs.launchpad.net/ubuntu/+source/octave/+bug/1372202

这个链接是关于Ubuntu操作系统中octave软件的一个Bug报告。

0

你是如何安装Octave的?错误提示表明你缺少GraphicsMagick C++接口(包libgraphicsmagick++3),但是:

  • 如果你是通过Ubuntu的软件包管理器安装Octave,你不应该遇到这个问题;* 如果你自己编译,Octave应该完全禁用imread,你会得到一个非常不同的错误消息。

所以我猜想你是自己构建的,可能有以下两种情况:

  • 你自己构建了GraphicsMagick++,但现在没有加载,你需要将其路径添加到动态链接器加载路径中(可以在/etc/ld.so.conf.d./graphicsmagick上定义LD_LIBRARY_PATH);

  • 从软件包管理器中获取的库已经被你意外删除了(因为你没有从存储库中安装Octave,所以软件包管理器不知道libgraphicsmagick++已经安装了)。

无论哪种情况,解决方案都很简单。从Ubuntu的软件包管理器中安装Octave。软件包管理器存在的主要原因之一就是避免这种类型的问题,即缺少依赖项。


2
我在15.04上遇到了同样的问题;我通过软件包管理器安装了libgraphicsmanager++3,aptitude也没有显示任何损坏:( - Paul Crowley
如果您通过软件包管理器安装了 GraphicsMagick 和 Octave,但仍无法正常工作,请将其报告给 Ubuntu 作为打包错误。@PaulCrowley - carandraug
同样的问题。Kubuntu 15.04,使用软件包管理器安装了Octave和ImageMagick,但imread无法工作。 - Carlos
@Carlos,你(和@PaulCrowley)的问题与原始问题不同。如果您正在使用Ubuntu 15.04,请参见https://bugs.launchpad.net/ubuntu/+source/octave/+bug/1372202。有人需要为此填写[SRU](https://wiki.ubuntu.com/StableReleaseUpdates)。由于您是Ubuntu用户,您会这样做吗? - carandraug
是的 @carandraug,我在 Launchpad 上找到了错误,谢谢。我想填写 SRU,但不确定如何操作... 我会尝试的。问候! - Carlos

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接