• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Octaveで画像が読み込めない(imread))

Octaveで画像が読み込めない(imread)

このQ&Aのポイント
  • Octaveで画像が読み込めないエラーが発生し、解決方法を探しています。
  • 現在のOctaveのバージョンが問題なのか、imageパッケージのインストールが必要なのか調査中です。
  • Mac OS X Yosemite 10.10.2でのOctave環境で、imreadを使用するための解決策を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • ki073
  • ベストアンサー率77% (491/634)
回答No.2

GraphicsMagickを入れると解決しそうですが、 自力で入れるのは大変そうなので、MacPortsを使って入れることをお勧めします。 https://www.macports.org これを使って最新版のOctave 3.8.2がイントールできます。もちろんそれに必要なGraphicsMagickも一緒にインストールさえれます、

chosukej
質問者

補足

早速の回答ありがとうございます。 GraphicsMagickを入れればよいのでしょうか。 以下,回答を参考に試したことです。 MacPortsで sudo port install GraGraphicsMagick を実行しました。 インストールは成功したようですが,imreadは同じエラーでできませんでした。 また,最新版のOctaveをインストールしようと思い, sudo port install octave を実行したところ,バージョンが3.8.1から変わりません。 MacPortsで最新版のOctaveはどうやってインストールできるのでしょうか? ターミナルからコマンドを打ってインルトールをした経験があまりないので, コマンドで説明してもらえると,すごく助かりますm(_ _)m

その他の回答 (6)

  • ki073
  • ベストアンサー率77% (491/634)
回答No.7

あちこちにOctaveが入っているようですね。整理した方が良さそうです。 それとHomebrewやMacPortsの共存もトラブルの元になりますので、一つにしましょう。 私の印象ではMacPortsの方がトラブルの対処がしやすように思いますのでこちらをお勧めしています。 さて掃除の仕方ですが、 /usr/localはMacは本来使っていませんので、分からなければ空にして問題はないはずです。 ここはHomebrewと後からインストールしたパッケージ型のソフトが使っています。同居がうまくいかないとトラブルの元になりますのでHomebrewは要注意です。 それと/optはMacPortが使っています。 後は、~/.profile と~/.bashrc、~/.bash_profile(ドットから始まるので注意)がMacPortなどのPATHなどの設定に使われています。スッピンのMacでは使われていないはずで、取りあえずは消してしまっても大丈夫なはずです。 ところで、MacPortsのOctaveはトラブっているようで、10.9にはうまくインストールできませんでした。もしかしたらエラーがでてインストールできていないかも知れません。port installedで確認できる Octaveのバイナリ版はどうなのでしょうか。 ScilabやRでも同じようなことが可能ならそちらをお勧めします。

chosukej
質問者

お礼

一つ報告があります。 現在インストールしているOctaveを全てアンインストールし, Mac向けOctaveのバイナリインストーラのwebサイト http://sourceforge.net/projects/octave/files/Octave%20MacOSX%20Binary/2013-12-30%20binary%20installer%20of%20Octave%203.8.0%20for%20OSX%2010.9.1%20%28beta%29/ から,Octave-3.8.0をインストールしたところ, アプリケーションフォルダにOctave-cilとOctave-guiが出現し, Octave-cilからターミナル画面に移って, img = imread('IMG_0614.jpg') と打つと, img = ans(:,:,1) = Columns 1 through 16: 227 228 229 230 230 230 230 230 231 229 229 228 229 229 229 228 224 227 228 229 229 229 229 230 230 229 228 227 229 229 229 229 223 224 225 226 226 ... のように,imreadを使うことができました。 これで万々歳と思われるかもしれませんが,今度はlibsvmの方が使えなくなってしまいました(泣) 以前のOctaveでは,色々設定すると使えていたのですが。。。 とりあえず,imreadの方は使えるようになったので, この質問は,ここで打ち切ろうと思います。 ki073さん,m1091757253さん,お二方の助言が励みになりました。 ベストアンサーは,半分個にしたい気持ちですが,始めに「新しいOctaveをインストールすれば良い」と, ご助言くださったki073さんにしたいと思います。ありがとうございました。

回答No.6

>シンボリックリンクの設定がうまくいっていないのでしょうか, No. ここの「Symbol」はシンボリックリンクの「Symbol」ではない。 エラーにかかれている通り、 Octaveが期待している例外処理に関する関数がこの11には入っていない。 名前が変わったのか、削られたのかまではここでは不明。 ->nmとかで調べるんだけどダメな原因を調べても仕方ない。 諦めるか、他の(古い)dyibを探すかですかね… お役に立てずごめんなさい。

回答No.5

> と打つだけでよいのでしょうか 絶対にNo. 例はMacでなくBSDでの表示の一部. 質問文中に /usr/local/lib/libGraphicsMagick++.3.dylib の文字列があるので GraphicsMagickやそれを使うソフトを導入していれば ディレクトリ「 /usr/local/lib 」あるいは他のディレクトリなどに libGraphicsMagick++.{バージョン}.dylib というファイルがあるはず。検索して探されたし。 {バージョン}は3以外の何らかの値になっているはず。 これを ln -s なり cp なりで(Octaveが要求している)数字の部分を3にしたファイルを作ってみる. 関数仕様やバイナリのインタフェースが変わってなければ動くようになる。

chosukej
質問者

補足

なるほど。 確かに,エラーの中にlibGraphicsMagick++.3.dylibと,あります。 ディレクトリ「/usr/local/lib」に移動し,lsコマンドで見ると,らしきものが, libGraphicsMagick++.11.dylib libGraphicsMagick++.dylib libGraphicsMagick++.la libGraphicsMagick.3.dylib libGraphicsMagick.dylib libGraphicsMagick.la libGraphicsMagickWand.2.dylib libGraphicsMagickWand.dylib libGraphicsMagickWand.la と,ありました。おっしゃる通り,libGraphicsMagick++.3.dylibがなかったので, シンボリックリンクを設定するコマンド, ln -s libGraphicsMagick++.11.dylib libGraphicsMagick++.3.dylib を打ち,libGraphicsMagick++.3.dylibを追加しました。 そして,octaveに戻り,再びimreadを実行したのですが, 以下のエラーが出ます。 octave:1> img = imread('IMG_0614.jpg') error: default_formats: /usr/local/Cellar/octave/3.8.1_1/lib/octave/3.8.1/oct/x86_64-apple-darwin14.1.0/__magick_read__.oct: failed to load: dlopen(/usr/local/Cellar/octave/3.8.1_1/lib/octave/3.8.1/oct/x86_64-apple-darwin14.1.0/__magick_read__.oct, 2): Symbol not found: __ZN6Magick14throwExceptionERN9MagickLib14_ExceptionInfoE Referenced from: /usr/local/Cellar/octave/3.8.1_1/lib/octave/3.8.1/oct/x86_64-apple-darwin14.1.0/__magick_read__.oct Expected in: /usr/local/lib/libGraphicsMagick++.3.dylib in /usr/local/Cellar/octave/3.8.1_1/lib/octave/3.8.1/oct/x86_64-apple-darwin14.1.0/__magick_read__.oct error: called from: error: /usr/local/Cellar/octave/3.8.1_1/share/octave/3.8.1/m/image/imformats.m at line 255, column 11 error: /usr/local/Cellar/octave/3.8.1_1/share/octave/3.8.1/m/image/imformats.m at line 78, column 3 error: /usr/local/Cellar/octave/3.8.1_1/share/octave/3.8.1/m/image/private/imageIO.m at line 60, column 7 error: /usr/local/Cellar/octave/3.8.1_1/share/octave/3.8.1/m/image/imread.m at line 107, column 30 octave:1> (>_<)。。。文中に,Symbol not found:とあるので, シンボリックリンクの設定がうまくいっていないのでしょうか, それとも,仕様が変わっているパターンでしょうか? ご助言よろしくお願いします!

  • ki073
  • ベストアンサー率77% (491/634)
回答No.4

Octaveは起動用のアイコンは無いようですね。失礼しました。 MacPotsでインストールしたものは基本的には /opt/local/にインストールされます。 ターミナルを再起動して、同じようにOctaveとしてみてください。(octaveと小文字かも知れません)、また which Octave でOctaveでどちらが起動するかわかります。 それでもだめなら /opt/local/bin/Octave として見てください。 /usr/local/binと/opt/local/bin両方に入っているので、PATHを書き換える必要があるかもしれません。 echo $PATH で/opt/local/binと/usr/local/binがどちらが先になっていますか?

chosukej
質問者

補足

基本的に,/opt/local/にインストールされるのですね。なるほど。 以下,試したことです。 まず,ターミナルで, which octave と打つと, /usr/local/bin/octave と出ました。これは過去に,確かhomebrewでインストールしたものだと思います。 一方, cd /opt/local/bin/ ls と打って,MacPortsでインストールしたOctaveを探してみましたが,ありませんでした。 ついでに, cd /usr/local/bin/ ls と打つと, octave octave-3.8.1 の2つが見つかりました。 片方は,新しくmacportsでインストールしたものか,以前Octaveのインストールに手間取った時の遺物か,どちらかだと思いますが分かりません。 一応,ターミナルで, octave-3.8.1 と打つと,こちらも起動しましたが, imreadは前回と同じエラーでやはり使えません。 ちなみにecho $PASSの結果は, /opt/local/bin:/opt/local/sbin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin:/usr/texbin でした。 これは,/opt/local/binが,/usr/local/binよりも優先されるという解釈でしょうか。

  • ki073
  • ベストアンサー率77% (491/634)
回答No.3

アプリケーションフォルダの中に「MacPorts」というフォルダができているはずです。 その中に新しいOctaveがあるはずです。

chosukej
質問者

補足

アプリケーションフォルダに「MacPorts」がないです。。。 Octaveも然り。。。なぜ 自分はてっきり,上書きされたものかと思っていました。 いつもOctaveを起動するときは,ターミナルから Octave と打って立ち上げています。 macportsでインストールすると,アプリケーションフォルダにインストールしたものが 保存されるのものなのでしょうか。

回答No.1

1)面倒なら適当なバージョンを入れて、無理やりバージョン番号の部分を置き換えてみる Macじゃないけど、こんなのでも動いた (-> はシンボリックリンク) libGraphicsMagick++.so.3 -> libGraphicsMagick++.so.9 libGraphicsMagick.so.3 -> libGraphicsMagick.so.14 2)自分でコンパイルする

chosukej
質問者

補足

ご返事ありがとうございます。 2)は難しそうです。 1)は,シンボリックリンクの設定をターミナルで, libGraphicsMagick++.so.3 -> libGraphicsMagick++.so.9 libGraphicsMagick.so.3 -> libGraphicsMagick.so.14 と打つだけでよいのでしょうか? ひとまず,GraphicsMagick-1.3.21をダウンロードし, http://wiki.octave.org/GraphicsMagick に書いてあるコマンドを(GraphicsMagick-1.3.21のディレクトリで)打ち,インストールしてみました。 しかし,インストールするだけではimreadは使えませんでした。 これに加えて必要なことがあれば,教えていただきたいですm(_ _)m

関連するQ&A