エラーメッセージをブログに掲載させていただいて、みなさんからの意見を求めたのですが、京都支部の集会にも参加されていたadachi_cさんから以下のコメントをいただきました。
(クリックして拡大) |
ライブラリーの項目に×がありました! |
OpenCV-2.3.1ライブラリを選択してOKでをクリック |
緑のチェックマークがついて正しくライブラリが参照された! |
Nexus S実機にアップすると異常終了せず正常に実行されるようになりました。
これは、Canny法によるエッジ検出を行った画像です。
原因と対処法
なぜ、インポートしたOpenCVライブラリのプロジェクトが×になったのでしょうか?
[プロジェクト]-[プロパティ]-[Android]画面のライブラリのパスを確認すると原因がわかります。
- ×NG ..\..\OpenCV-2.3.1 …2つ上の階層のOpenCV-2.3.1ディレクトリ
- ○OK ..\OpenCV-2.3.1 …1つ上の階層のOpenCV-2.3.1ディレクトリ
つまり、そのままサンプルプログラムをインポートすると、2つ上のディレクトリにあるOpenCV-2.3.1プロジェクトを参照しに行くということです。
もともとハンズオンでは、配布した「OpenCV-2.3.1-android-bin.tar.bz2」ファイルを解凍しCドライブ直下に配置する様に指示がありました。配置後のディレクトリ構成は以下のようになります。
サンプルプロジェクトから見ると2つ上の階層にOpenCVライブラリがある |
つまり、この状態を保ったままインポートできれば、サンプルソースはライブラリ・プロジェクトの「OpenCV-2.3.1」フォルダを正常に参照できるできるはずです。
根本原因は、インポートする際にライブラリ・プロジェクトもサンプル・プロジェクトも通常のワークスペースにコピーしていたためでした。
以下の画像のように「□プロジェクトをワークスペースにコピー」のチェックを外して、Cドライブ直下にあるライブラリ・プロジェクトとサンプルプロジェクトをインポートすれば、正常に動作します。
OpenCVライブラリ・プロジェクトをワークスペースにコピーせずにインポート |
ネットから落としてきたサンプルをインポートする際に、「□プロジェクトをワークスペースにコピー」のチェックを入れてコピーする人は少なくはないと思うので、手順の中に以下の文言を含めたほうがいいと思います。
- 「□プロジェクトをワークスペースにコピー」のチェックを入れずにインポートすること。
あと、自分で作ったプロジェクトでOpenCVライブラリを利用する際にもプロジェクトのプロパティを確認する必要があると思います。
これで、OpenCVプログラミングをはじめる事が出来ます。
とはいえ、JavaAPIでまだまだわからないことが多いようで、これからいろいろ見ていこうかと思います。
0 件のコメント:
コメントを投稿