2017-11-08 17 views
0

camera2 apiを使用してカメラのプレビューを円形で表示したいとします。私は円形の形でプレビューを表示したいが、私は画像を円形の形で取りたいとは思わない。カメラのプレビューを円で表示する

キャプチャされたイメージは顔です(後で顔検出と自動キャプチャを実装したい)。すでに質問された質問はほとんどありませんでしたが、新しいcamera2 APIのものはどれもありません。そのほとんどは、透明な円で切り取ったオーバーレイ画像を持つことについて話しています。しかし、顔を自動的に検出する必要がある場合(顔が切り取られた円形の画像の外に出現する可能性があるため)、これは機能しません。

これを実装する方法はありますか?私はTextureViewで例を試して、幅と高さが固定されたLinearLayoutに設定しましたが、プレビューはちょっと狭められて正方形になりました。

+0

プレビューにImageViewを使用している場合は、この回答を参照してください。[円形画像ビューアの作成方法](https://stackoverflow.com/questions/22105775/imageview-in-circular-through-xml) –

答えて

2

ここで顔検出が重要である理由はわかりません。カメラAPIの顔検出機能を有効にすると、丸で囲んで描くときに何をするにしても、完全な画像で動作します。

正しい形状のTextureViewまたはSurfaceViewの上にサークルオーバーレイを使用することも、カメラプレビューをEGLテクスチャとして使用して独自のOpenGLレンダリングを行うこともできます。

後者では、OpenGL描画コンテキスト用のGLSurfaceViewと、カメラデータをEGLテクスチャとして送信して公開するSurfaceTextureが必要になる場合があります。

キャプチャされたJPEGは完全なFOVになります。カメラAPIは円形のプレビュー図面については何も知らないため、顔検出やその他すべてが視野全体で機能します。

+0

私は、 TextureViewを正しく整形することが意味することを理解していますか?TextureViewを円で形づくる必要がありますか?もしあなたが知っていれば、私はいくつかのサンプルコードを教えてください。私はプレビューを円形にすることに固執しています。 – Neha

+0

Androidビューをサークルにすることはできません。それらは常に長方形です。ですから、OpenGLやその他の描画コードを必要とするサークルに描画するか、TextureViewの上に描かれた透明な円でImageViewなどをオーバーレイする必要があります。 –

+0

私は同様のアプローチに従って、カメラのプレビューを背景に設定し、画像を透明な円でオーバーレイしてみました。どうもありがとう! – Neha

関連する問題