13

Java SDK側のAndroidカメラドキュメントによると、フレームデータにアクセスするには、カメラプレビューフレームに描画する(表示され、アクティブな)サーフェスを提供する必要があります。私はここで出くわしたもののいくつかをリンクしました(私は新しいので2つのハイパーリンクに制限されています)が、SOに自分の質問を投稿する前に、さまざまなもののドキュメントをたくさん調べました。

私の問題:

a)カメラのプレビューを画面に明示的に描画したくないので、可能であれば、バイトデータ(ここから取得できます)をカメラのバッファーから直接取得したいだけです。

b)はい、私はこれを見ました: プレビューなしでカメラから写真を撮っています

ただし、これは、このライブラリを使用するアプリが、この(一見)任意のビューをアプリのレイアウトに挿入する必要があることを示しています。このビューは、常に表示されている必要があります(レイアウトを切り替えたり、親コンテナーの表示を変更したり、サブアクティビティを使用したりすることはできません)。アプリのライフサイクル。

実際、私のニーズはこのポスターのニーズと似ていますが、ディスク上の画像に保存されたキャプチャではなく、カメラプレビューデータの継続的なリアルタイムストリームが必要な点が異なります。したがって、呼び出しとPictureCallback一緒に彼のために働きます。myCamera.takePicture明らかな理由で、ディスクへの連続キャプチャの書き込みは私にとって解決策ではないため、私の場合は機能しません。myCamera.takePictureまた、プレビューフレームを取得するよりもはるかに低速です。

c)NDKに手を出し始めて、かなり良い感じになりました。ただし、これによると、ネイティブを介したカメラデータへのアクセスはサポートまたは推奨されておらず、それでもデバイスの互換性には大きな問題があります。

これが古く、Androidデバイスからカメラデータを取得するための確実なNDKルートがある場合、私はそれらを見つけることができなかったので、それらを私に指摘できればそれは素晴らしいことです。

d)Unity(ユニティプラグインの形式)などのツールからこのライブラリにアクセスできるようにしたいので、JAR(またはネイティブの場合は.so)にコンパイルして、動作することを期待します。ライブラリをそのようにインポートするAndroidアプリ。これにより、アプリ開発者が特定のUI/レイアウト構成を必要とせずにカメラを使用できるようになります。

コンテクスト:

Androidアプリで使用するビジョン処理ライブラリを作成できるようにしたいのですが、ライブラリを使用するアプリを制限して、ビジョンを使用するために特定のアプリレイアウトを使用し、画面に特定のビューを描画する必要があります。結果の処理-非常に簡単な例として、アプリがライブラリを使用してカメラが見るものの平均色を取得し、画面上の画像にその色を付けたい場合。

私が持っているポイントのいずれかに向けて私が得ることができるどんな提案も非常に役に立ちます。どうもありがとうございました!

4

2 に答える 2

5

私はこの質問をしたことを完全に忘れました。2年後のAndroidSDKバージョンのいくつかで、システムが機能しています。

必要なカメラを参照して、拡張を使用していますSurfaceTexturecameraSurfacecameraSurfaceを使用してSurfaceTexture

mCamera.setPreviewTexture(mSurfaceTexture);
mCamera.startPreview();

次に、現在アクティブなカメラpreviewCallbackをアクティビティから、または必要な場所でオーバーライドします。

mCamera.setPreviewCallback(new PreviewCallback() {

     public void onPreviewFrame(final byte[] data, final Camera camera) {
         // Process the contents of byte for whatever you need
     }
});

これにより、保存されている画像を確認するだけでなく、カメラが認識しているものを継続的に処理できます。もちろん、これはカメラのプレビュー解像度に制限されます(スチルキャプチャまたはビデオ解像度とは異なる場合があります)。

時間があれば、必要最低限​​の作業デモを作成してみます。

編集:リンクしていたSDKは無料で利用できなくなりました。BitGymの連絡先ページからリクエストすることもできます。

于 2014-05-24T11:05:37.753 に答える
0

SurfaceView画像のプレビューを回避することはできません。あなたができることはbyte[]、ライブラリを実装するアプリにキャプチャの責任を委任することです。これにより、アプリはカメラからの画像だけでなく、すでに撮影された画像にもライブラリを使用できるようになります。

于 2014-05-14T08:09:28.757 に答える