問題タブ [android-camera2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
121 参照

android - Samsung Grand Quatro Duos で、フロント カメラから Android でプログラムを使用して写真を撮ろうとすると、アプリケーションがクラッシュする

github で入手可能なソースからフロントカメラを使用して、Android でプログラムで写真を撮るためのコードを実装しようとしました。

ソース コードは、Micromax や Lenovo などの他のデバイスでは問題なく動作しますが、Samsung Galaxy Grand Quatro Duos でテストしようとすると、次のように言ってアプリケーションがクラッシュしました。

takePicture は android.hardware.Camera.native_takePicture(Native Method) で android.hardware.Camera.takePicture(Camera.java:1194) で失敗しました

誰でもこの問題について私を助けることができますか? さらに、カメラ クラスは Api 21 Lollipop で非推奨になり、Camera2 API を使用して同じコードを実装する必要があります。Camera2 API を使用して同じものを実装する方法を誰かが知っている場合は、コードまたは参照リンクを投稿してください。

0 投票する
0 に答える
267 参照

android - カメラの色を操作して Android Studio で表示する

私は現在、電話カメラからのライブカメラフィードの色をいじるアンドロイドスタジオのアプリケーションに取り組んでいます。たとえば、すべての赤を除外したい場合や、表示されるカメラ画像を白黒にしたい場合があります。

ただし、これを行う方法についてはあまり見つけていません。非推奨の Camera クラスと android.hardware.camera2 クラスの両方を使用するチュートリアルを見つけました。私の好みのサンプル コードは camera2 用で、ここに直接あります(プロジェクト全体ではなく、Java クラス ファイルに直接移動します)。

それで、camera2を使って私がやりたいことをする方法を知っている人はいますか? 代わりに非推奨のクラス Camera を使用する必要がありますか? 私の考えは、画像を表示するという主な仕事を持つアクティビティが必要であり、舞台裏で電話カメラが実行され、画像を送信して(どんな形式、ビットマップでも)色を台無しにする必要があるということです(いくつかのコードによってこれにより、メイン アクティビティで表示される画像が送信されます。

以上が 3 つの主要部分です。(1) カメラからビットマップへ。携帯電話のカメラで現在見られているものを取得し、コードに保存します。(2)ビットマップの色をいじって、現在のビューを希望の方法で歪めます。(3) 次に、結果として生じる歪んだビューを取得し、それを画面に表示する方法。もちろん、前述したように、私が本当に助けを必要としているのは、今言及した 3 つのうちの最初と最後です。

他に知っておくと役立つ詳細を教えてください。

0 投票する
1 に答える
209 参照

android - バーコード リーダーのサンプルで CameraSource が重複しています。なんで?

バーコード リーダーのサンプルには、CameraSource クラスが付属しています。ただし、com.google.android.gms.visionパッケージには CameraSource の同様の実装も含まれています。サンプル クラスには追加のメソッドがあります (setFocusMode()、setFlashMode() など)。これらのメソッドが使用されていない場合は、サンプル カスタム クラスを に置き換えることができるようcom.google.android.gms.vision.CameraSourceです。試してみたところ、サンプルは正常に動作します。

サンプルが CameraSource の独自の実装を提供する理由を知っている人はいますか?

0 投票する
2 に答える
2967 参照

android - Android Camera2 キャプチャ画像の傾き

更新:これはこれに関連しているように見えます: Android camera2 API からの画像データが Galaxy S5 でフリップ & スクイッシュされる希望のアスペクト比に到達するために手動でトリミングすると、「サポートされている」出力サイズも使用しない可能性があります。

問題:

  1. Camera2 API を使用してカメラの特性を取得し、MediaCodec.class に適した出力サイズを抽出します
  2. 適切なカメラ出力サイズのいずれかで MediaCodec 入力サーフェスを作成します。出力をMediaMuxerなどにフィードして、出力を確認します。
  3. コーデックの作成されたサーフェスをターゲットとして使用して、カメラ キャプチャ リクエストを開始します。
  4. コーデック出力は正しいサイズです。ただし、結果はデバイスによって異なります。

    • Nexus 5/6: Android 5/6 で問題ありません。
    • Android 5.1 を搭載した Samsung タブレット: 一部の解像度では、画像が明らかに引き伸ばされており、カメラの出力解像度が表面のサイズと一致していないことを示しています。カメラを回転させ始めると、非常に明白になります。X/Y 軸に沿っていないため、画像がますます歪んでいきます。他のいくつかの解像度では、出力は問題ありません。ここには、サイズまたはアスペクト比に関連するパターンはありません。

問題ありません。おそらく、指定された幅や高さなどでサーフェスが正確に作成されない可能性があります (出力サイズが MediaCodec.class ターゲット用に特別に抽出された場合でも)。

そこで、OpenGL コンテキストを作成し、テクスチャとそのための SurfaceTexture を生成し、デフォルトのバッファ サイズをカメラ出力サイズに設定し、テクスチャを使用して Surface を作成しました。これを TextureView に描画したり、MediaCodec の EGL サーフェスに戻したりする詳細については説明しません。結果は同じです。Camera2 のキャプチャ リクエストは、一部の解像度でのみ歪んだ画像を出力します。より深く掘り下げる: updateTexImage の直後に SurfaceTexture で getTransformMatrix を呼び出す - マトリックスは、予想どおり、常に恒等マトリックスです。

したがって、ここでの本当の問題は、カメラが提供されたターゲット サーフェスのサイズでキャプチャしていないことです。解決策は、カメラがキャプチャしている実際のサイズを取得することであり、残りは正しく描画するための純粋な GL マトリックス変換です。しかし - どうすればそれを手に入れることができますか?

注: 古いカメラ API を使用して、まったく同じ「プレビュー サイズ」とターゲット (MediaCodec またはカスタムのいずれか)と同じサーフェスを使用する - すべて問題ありません! しかし、古いカメラ API は非推奨であり、最大キャプチャ サイズが 1080p のように見えるため、使用できません。一方、Camera2 API はそれを超えており、4k 録画をサポートする必要があります。

0 投票する
2 に答える
1886 参照

android - Camera2 と Renderscript の割り当て

USING_IO_INPUT フラグで作成された割り当てを使用して、カメラから画像を取得しようとしています。以下のように設定しています

割り当てサーフェスをプレビュー セッションに追加し、非常に単純な関数へのコールバックを取得しています。

このセットアップは Nexus 5X では機能しますが、5.1.1 を実行している Nexus 4 では失敗します。コールバックを呼び出すallocation.ioReceive()と、ドライバーからいくつかの警告が出力され、Allocation からバイト配列にコピーすると、ガベージがコピーされます。

onBufferAvailable「RSMessageThread」で呼び出されますが、バックグラウンド スレッドでカメラを実行しています。

この問題は、割り当てとカメラ プレビューの設定方法に関連していますか、それともドライバーのバグですか?