1

OpenCv4Androidのサンプルver.をEclipse Junoにインポートしました。2.4.5、「カメラコントロール」と呼ばれます。ここで見つけることができます: Camera Control OpenCv4Android Sample .

今、私はこのプロジェクトを私のベースとして使用したいと考えています。画像処理技術を使用してすべてのフレームを処理したいので、パフォーマンスを向上させるために、プロジェクトのメイン アクティビティを 2 つのクラスに分割したいと考えています。プレビューします。

どのようにできるのか?これについての例はありますか?

4

1 に答える 1

0

現時点ではこれについて自分で学んでいるだけなので、これは完全な答えではないかもしれませんが、できる限り多くの情報を提供します.

自分でカメラから画像を取得して、スレッドにディスパッチする必要があります。これは、例のアクティビティがカメラからのフレームで呼び出され、戻り値として (すぐに) 表示されるフレームを返す必要があるためです。その間に空白の画面を表示したり、その他のハックなものを表示したりせずに、2 つ以上のフレームを並行して処理することはできません。おそらく、(固定サイズの) バッファをどこかに割り当てて、フレームを取得したらワーカー スレッドでフレームの処理を開始することをお勧めします (これはディスパッチャになります)。ワーカー スレッドが完了すると、ビューに画像を提供するディスパッチャーに通知します。すべてのワーカー スレッドがビジーである (つまり、バッファに空きスロットがない) ときにカメラからフレームが送信されると、フレームはドロップされます。バッファ内のスペースが再び解放されると、

initialitzeCameraの関数のコードJavaCameraViewを見て、NativeCameraViewこれを行う方法のアイデアを得ることができます (これは、OpenCV を使用しないアプリでも同様に行う必要があるため、Google も役立つはずです)。私にとっては、ネイティブカメラのパフォーマンスが大幅に向上しています(重い処理をしなくても、はるかにスムーズです)が、ymmv ...

私自身はまだそれほど詳しくないので、実装に関する実際の詳細についてはお答えできません。ただし、これはいくつかのアイデアを提供します。

于 2013-06-07T21:38:14.370 に答える