質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

Q&A

解決済

2回答

912閲覧

XMLでPreviewViewのscaleType="fillStart"となっていますが、どういった意味なのでしょうか。

Sakana4432

総合スコア4

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

0グッド

0クリップ

投稿2022/11/23 16:10

TensorfFlowLight(Android)をつかったオブジェクト検知のデモプログラムの内容です。
https://github.com/tensorflow/examples/tree/master/lite/examples/object_detection/android_play_services

このプログラムではCameraXのImageAnalysisから検出器に画像を渡す際に、4_3比率で渡しており、それに合わせてPreviewの比率も4_3になっているようです。

実際には画面いっぱいにPreviewが表示されているのですが、どうしてなのか理解できません。
scaleType "fillStart"で調べてもあまり情報が出てこなかったので、ご存じの方がいれば教えていただけないでしょうか。
宜しくお願いいたします。

fragment_camera.xml

1<?xml version="1.0" encoding="utf-8"?> 2 3<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 4 xmlns:app="http://schemas.android.com/apk/res-auto" 5 xmlns:tools="http://schemas.android.com/tools" 6 android:id="@+id/camera_container" 7 android:layout_width="match_parent" 8 android:layout_height="match_parent"> 9 10 <androidx.camera.view.PreviewView 11 android:id="@+id/view_finder" 12 android:layout_width="match_parent" 13 android:layout_height="match_parent" 14 app:scaleType="fillStart"/> 15 16 <org.tensorflow.lite.examples.objectdetection.OverlayView 17 android:id="@+id/overlay" 18 android:layout_height="match_parent" 19 android:layout_width="match_parent" /> 20 21 <androidx.core.widget.ContentLoadingProgressBar 22 android:id="@+id/progress_circular" 23 android:layout_width="wrap_content" 24 android:layout_height="wrap_content" 25 android:indeterminate="true" 26 android:visibility="visible" 27 android:layout_gravity="center" 28 style="?android:attr/progressBarStyleLarge" /> 29 30 <include 31 android:id="@+id/bottom_sheet_layout" 32 layout="@layout/info_bottom_sheet" /> 33</androidx.coordinatorlayout.widget.CoordinatorLayout>

MainActivity.kt

1..... 2// Preview. Only using the 4:3 ratio because this is the closest to our models 3 preview = 4 Preview.Builder() 5 .setTargetAspectRatio(AspectRatio.RATIO_4_3) 6 .setTargetRotation(fragmentCameraBinding.viewFinder.display.rotation) 7 .build() 8 9 // ImageAnalysis. Using RGBA 8888 to match how our models work 10 imageAnalyzer = 11 ImageAnalysis.Builder() 12 .setTargetAspectRatio(AspectRatio.RATIO_4_3) 13 .setTargetRotation(fragmentCameraBinding.viewFinder.display.rotation) 14 .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) 15 .setOutputImageFormat(OUTPUT_IMAGE_FORMAT_RGBA_8888) 16 .build() 17 // The analyzer can then be assigned to the instance 18 .also { 19 it.setAnalyzer(cameraExecutor) { image -> 20 if (!::bitmapBuffer.isInitialized) { 21 // The image rotation and RGB image buffer are initialized only once 22 // the analyzer has started running 23 bitmapBuffer = Bitmap.createBitmap( 24 image.width, 25 image.height, 26 Bitmap.Config.ARGB_8888 27 ) 28 } 29 detectObjects(image) 30 } 31 } 32 33 // Must unbind the use-cases before rebinding them 34 cameraProvider.unbindAll() 35 try { 36 // A variable number of use-cases can be passed here - 37 // camera provides access to CameraControl & CameraInfo 38 camera = cameraProvider.bindToLifecycle(this, cameraSelector, preview, imageAnalyzer) 39 40 // Attach the viewfinder's surface provider to preview use case 41 preview?.setSurfaceProvider(fragmentCameraBinding.viewFinder.surfaceProvider) 42 } catch (exc: Exception) { 43 Log.e(TAG, "Use case binding failed", exc) 44 } 45 } 46.....

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mikandesu4

2022/11/23 23:09

回答ありがとうございます。 ホームページに載っていたのですね、見落としていました。 アスペクト比を維持したままスケールと書いてありますが、私の画面上では4_3比率ではなく、画面比率2_1になっているのはどうしてなのでしょうか。 宜しくお願い致します。
mikandesu4

2022/11/23 23:18

解決致しました。 ありがとうございました。
guest

回答2

0

ベストアンサー

プレビューを実装する - スケールタイプ の FILL_START のことでしょう。

動画が PreviewView のアスペクト比と一致しない場合、コンテンツの一部のみが表示されますが、PreviewView 全体に動画が表示されます。

投稿2022/11/23 16:43

編集2022/11/23 16:44
jimbe

総合スコア12659

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

回答ありがとうございます。
カメラのプレビュー全体像が表示されているように見えていましたが、実際は隅が見切れていると言う訳ですね。
納得出来ました、ありがとうございました。

投稿2022/11/23 23:17

mikandesu4

総合スコア3

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jimbe

2022/11/24 05:00

私の回答へのコメント…でしょうか。 ちょっと分かりにくいですが、各回答にも「コメント」リンクがありますので、各々へのコメントはそちらを利用してください。
Sakana4432

2022/11/24 07:35

慣れていないものですいません。 ありがとうございました。
jimbe

2022/11/24 08:27 編集

質問の方は「質問にコメントする」て鉛筆アイコン付きで独立してあるのに、回答の方は編集に並んで (鉛筆アイコンで無く)「コメント」てあるだけなんですよね・・・。 ところで、 mikandesu4 さんと Sakana4432 さんのご関係はなにか…?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問