2011-07-13 3 views
1

私はAndroidの携帯電話で実行するデスクトップで動作するC++コードベースを取得しようとしています。このコードでは画像が使用され、現在はCqByteImageというユーザー定義のクラスを使用して画像とのインターフェースを行っています。 NDKは、IplImageオブジェクトを使用してカメラとインタフェースします。C++で2つのユーザー定義オブジェクトを型キャストすることは可能ですか?

ここで、私は最小限の変更を加えるために、IplImageを他のものとタイプしやすいと思いますか?

私の唯一の解決策は、今すぐIplImageを受け入れる機能を書き直すことです - これは30h/cppファイルを超えているので難しいかもしれません。

提案を歓迎します。私の質問があいまいな場合は、私は説明を投稿することができます。あなたはキャストまたは関数を再書き込むことによってこれを行うにはしたくないだろうはるかに高く評価

ヘルプ、 M

+1

それはほぼ確実に動作しませんし、メモリからJavaが電話でこの種のもののいくつかを妨げる可能性があるC++よりもそのようなものについて厳しいような他には思えるとしてだけ1をキャスト。 CqByteImageとIplImageの間には、あるものが他のものの代用として使用できると考えるような関係がありますか? – Peter

+0

これらは、画像を扱い、 "類似の"特性を持つカスタムオブジェクトタイプです。それは、私はあなたに同意すると述べています。私は型キャスティングに暗黙のうちに互換性がある理由はないと思います。 – Mayur

答えて

2

IplImageからすべてのデータを取得するか、またはIplImageのメソッドの観点からCqByteImageのメソッドを実装することによって、IplImageからCqByteImageを作成するメソッドを作成すると便利です。

+0

素晴らしい!それでは、ネイティブでないオブジェクト型を使用すると、NDK/Javaに問題が生じるでしょうか? 現在、私は のような機能を持っています。AndroidRead(int idx、image_pool * pool){ cv :: Mat greyimage = pool-> getGrey(idx); IplImage image = greyimage; CqByteImage imSrcGray; <いくつかの機能は、オブジェクトimSrcGrayを使用して呼び出す> } しかし、私は、コンパイル時に、私は(CqByteImageはテンプレートクラスであり、NDKは非常にテンプレート友好的ではない?)CqByteImage」コンストラクタ/デストラクタのために未定義の参照の多くを得る – Mayur

0

IplImagesをCqByteImagesとして使用するためのラッパーの作成を検討しましたか?イメージに互換性が内部表現を持っている場合は、これも非常に効率的であるかもしれないhttp://en.wikipedia.org/wiki/Adapter_pattern

を参照してください。

+0

うわー!もう一ついいアイデア。 NDKで非ネイティブオブジェクトタイプを使用したことを前に述べたように、私は心配しています。 提案? – Mayur

関連する問題