2012年4月4日水曜日

MacBookAir(10.7 Lion)でHandyAR その2

ということで2日目です。
昨日はコンパイル通ったところまで確認できたので、今日は実際に動かしてみましょう!

実行ファイル作成

とりあえずmain書かないとお話にならないので、まずはそこからいきます。
とはいえ何も参考にしないで書ける訳がないので、デモに入っているmain.cppを覗いてみます。

…なんかそのまま使えそうなので、使ってしまいましょう。
てい。



案の定、エラー出ませんでした。
引き続き、インクルードしているヘッダ(main.h、bunny/inc/bunny.h)をすべて追加すれば準備が完了です。
実行ファイルを作りましょう。
といってもNetBeansにお任せなので、必要なパスを通して依存関係書いておけばあとは勝手に…


はいエラーw
昨日の段階でコンパイルできてたってのは幻想だったんですねーwww

…やっぱりソースの修正は必要なようです。

エラー吐いたファイルはFingertipTracker.cppだそうなので、中を見てみましょう。
エラーの箇所はこんな感じでした。

684行目〜
    if ( nPoints < NUM_FINGERTIP )
    {
        _fDetected = false;
        _nFingertips = 0;
        _nPoints = 0;
        goto Finished;
    }

772行目〜
Finished:

    //
    // Update Mode
    //
    if ( _fDetected )
    {
        _nMode = MODE_FINGERTIP_TRACKING;
    }
    else
    {
        _nMode = MODE_FINGERTIP_LOST_TRACKING;
    }

    return _fDetected;

goto文って使ってる人いたんだ、とか思いつつ、文法的には合ってるっぽいので何故にエラーが出たのかもよくわからず。

軽くぐぐってみると、どうもMac特有のエラーらしいので、goto文を使わないように修正します。
幸い、単純にエラー時の終了処理のためだけに使われているようなので、772行目以降のif文をメソッドに閉じ込めて、684行目のif文に入ったらそのメソッドを呼び出して即returnするようにしましょう。

ということで、修正後のコードは以下になります。
684行目〜
    if ( nPoints < NUM_FINGERTIP )
    {
        _fDetected = false;
        _nFingertips = 0;
        _nPoints = 0;
        updateMode();

        return _fDetected;
    }
772行目〜
    //
    // Update Mode
    //
    updateMode();

    return _fDetected;
どちらもupdateMode()というメソッドがいきなり出てきてますが、これは以下のように定義しています。

void FingertipTracker::updateMode() {
    if ( _fDetected )
    {
        _nMode = MODE_FINGERTIP_TRACKING;
    }
    else
    {
        _nMode = MODE_FINGERTIP_LOST_TRACKING;
    }
}
単にif文をメソッド化しただけ。

ということで再度ビルドしてみますが、今度はFingertipPoseEstimation.cppからエラー…
ただしこちらもgoto文関係のエラーなので、まずは関連しているラベルを確認。

209行目〜
Finished:

    return fResult;

…goto文をすべて消して、直後に全く同じreturn文を書くことで対処しました。

改めてビルドすると今度こそ…
成功!
無駄に長かったですねー…

実行してみる

はやる心を抑えつつ、早速実行してみます。


あ。


(ノ∀`)アチャー

ダメでした。
しかしエラーログ見る限り、必要なファイルが無いだけのようなので、これをプロジェクトルートに追加します。
一応、念のために必要そうなファイルはすべて追加しておきましょう。


気を取り直して再度実行します。


とりあえずエラーは出てませんし、カメラにもアクセスできている風なんですが、全然ウィンドウが表示される気配が無いです…


ということで、困ったときのアクティビティモニタ。


応答なしwww
こらダメだwwwww

中身に踏み込…もうとする

このままではどうしようもないので、頑張ってソースを読むことにします。



…が、今日は疲れたので明日の自分に期待!!

0 件のコメント:

コメントを投稿