LoginSignup
1
0

[Vision API] Javaで画像のプロパティを検出する

Posted at

Googleが提供しているVision APIをJavaで使ってみました。

APIを使用し、画像のプロパティを取得します。
ドミナントカラーとクロップヒントを取得します。

取得情報 概要
ドミナントカラー 同じか類似の色相を基調に、トーン(色調)を変えた配色法
クロップヒント 画像をクロップするヒント(座標)

下記の記事の方法でも取得可能です。
⧉[Vision API] Javaで画像のクロップヒントを検出する
詳しくはこちらを参照ください。

APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[Vision API] Javaで画像内のいろいろなものを検出する
を参照ください。

No 目次
1 Feature.Typeの指定
2 実行結果の取得
1 レスポンスの出力
2 レスポンスの内容
3 結果の検証
1 繁華街
2 交通標識
3 ボーリング
4 人物
5 富士山
6 熊本城
7
8 野菜
9
10 デスク
11 景色
12 駐車場

1. Feature.Typeの指定

クロップヒントを検出する場合は、
Feature.Type.IMAGE_PROPERTIES
を指定します。

以下の記事でexecApi()にタイプを指定します。
⧉[Vision API] Javaで画像内のいろいろなものを検出する

2. 実行結果の取得

2.1. レスポンスの出力

取得した結果をコンソールに出力します。

private static void output(BatchAnnotateImagesResponse response){
    List<AnnotateImageResponse> responses = response.getResponsesList();
    
    for (AnnotateImageResponse res : responses) {
        if (res.hasError()) {
            System.out.format("Error: %s%n", res.getError().getMessage());
            return;
        }
        
        DominantColorsAnnotation colors = res.getImagePropertiesAnnotation().getDominantColors();
        for (ColorInfo color : colors.getColorsList()) {
            System.out.format("fraction: %f%nr: %f, g: %f, b: %f%n",
                    color.getPixelFraction(),
                    color.getColor().getRed(),
                    color.getColor().getGreen(),
                    color.getColor().getBlue());
        }
    }
}

2.2. レスポンスの内容

BatchAnnotateImagesResponseの
getResponsesListでAnnotateImageResponseリストが取得できます。
検出されなった場合は、空のリストが返ってきます。

AnnotateImageResponse

メソッド 戻り値 内容
getCropHintsAnnotation CropHintsAnnotation クロップヒントのセット
getImagePropertiesAnnotation ImageProperties 画像プロパティ

CropHintsAnnotation

[Vision API] Javaで画像のクロップヒントを検出する
を参照してください。

ImageProperties

メソッド 戻り値 内容
getDominantColors DominantColorsAnnotation ドミナントカラー

DominantColorsAnnotation

メソッド 戻り値 内容
getColorsList List<ColorInfo> RGB カラー値とそのスコアおよびピクセル割合

ColorInfo

メソッド 戻り値 内容
getScore float この色の画像固有のスコア。範囲は0〜1
getPixelFraction float 画像内で色が占めるピクセルの割合。範囲は0〜1
getColor Color RGB色

Color

メソッド 戻り値 内容
getRed float 赤色
getGreen float 緑色
getBlue float 青色

3. 結果の検証

いろいろな画像のプロパティを検出してみました。
ドミナントカラーの画像は、取得したレスポンスを元に生成しています。

3.1. 繁華街

検出させる元画像

ドミナントカラー

3.2. 交通標識

検出させる元画像

ドミナントカラー

3.3. ボーリング

検出させる元画像

ドミナントカラー

3.4. 人物

検出させる元画像

ドミナントカラー

3.5. 富士山

検出させる元画像

ドミナントカラー

3.6. 熊本城

検出させる元画像

ドミナントカラー

3.7. 街

検出させる元画像

ドミナントカラー

3.8. 野菜

検出させる元画像

ドミナントカラー

3.9. 猫

検出させる元画像

ドミナントカラー

3.10. デスク

検出させる元画像

ドミナントカラー

3.11. 景色

検出させる元画像

ドミナントカラー

3.12. 駐車場

検出させる元画像

ドミナントカラー



おしまい。。。
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0