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

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

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

|取得情報|概要|
|---|---|
|ドミナントカラー|同じか類似の色相を基調に、トーン（色調）を変えた配色法|
|クロップヒント|画像をクロップするヒント(座標)<br><br>下記の記事の方法でも取得可能です。<br>[⧉[Vision API] Javaで画像のクロップヒントを検出する](https://qiita.com/doran/items/a661a39702e8d0e1a8a9)<br>詳しくはこちらを参照ください。|
 
:::note info
APIを利用する環境の準備から始める場合や、コードを実行する際は、
[⧉[Vision API] Javaで画像内のいろいろなものを検出する](https://qiita.com/doran/items/444cb6231b7dffb9ddac)
を参照ください。
:::

|No||目次|
|---|---|---|
|1||[Feature.Typeの指定](#1-featuretypeの指定)|
|2||[実行結果の取得](#2-実行結果の取得)|
||1|[レスポンスの出力](#21-レスポンスの出力)|
||2|[レスポンスの内容](#22-レスポンスの内容)|
|3||[結果の検証](#3-結果の検証)|
||1|[繁華街](#31-繁華街)|
||2|[交通標識](#32-交通標識)|
||3|[ボーリング](#33-ボーリング)|
||4|[人物](#34-人物)|
||5|[富士山](#35-富士山)|
||6|[熊本城](#36-熊本城)|
||7|[街](#37-街)|
||8|[野菜](#38-野菜)|
||9|[猫](#39-猫)|
||10|[デスク](#310-デスク)|
||11|[景色](#311-景色)|
||12|[駐車場](#312-駐車場)|

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

以下の記事でexecApi()にタイプを指定します。
[⧉[Vision API] Javaで画像内のいろいろなものを検出する](https://qiita.com/doran/items/444cb6231b7dffb9ddac#25-apiを呼び出す)

# 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](#crophintsannotation)|クロップヒントのセット|
|getImagePropertiesAnnotation|[ImageProperties](#imageproperties)|画像プロパティ|
#### CropHintsAnnotation
[Vision API] Javaで画像のクロップヒントを検出する
を参照してください。

#### ImageProperties
|メソッド|戻り値|内容|
|---|---|---|
|getDominantColors|[DominantColorsAnnotation](#dominantcolorsannotation)|ドミナントカラー|

#### DominantColorsAnnotation
|メソッド|戻り値|内容|
|---|---|---|
|getColorsList|List\<[ColorInfo](#colorinfo)\>|RGB カラー値とそのスコアおよびピクセル割合|

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

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

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

### 3.1. 繁華街
**検出させる元画像**
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/9b78a837-5b15-c8c4-d4f5-3bc3f69fb92e.jpeg">

**ドミナントカラー**
<img width="320" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/c12cd8f4-2896-ce2c-2a77-2ee651c24c21.jpeg">

### 3.2. 交通標識
**検出させる元画像**
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/9ae5caca-66b2-3d72-774e-e16f9c13b925.jpeg">

**ドミナントカラー**
<img width="320" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/12629825-acd4-865d-377c-42e766d75d83.jpeg">

### 3.3. ボーリング
**検出させる元画像**
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/d7330b6f-ec07-4959-cff2-345e546dfceb.jpeg">

**ドミナントカラー**
<img width="320" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/b5c3295e-7157-6e8d-391b-6c0c3e172e5d.jpeg">

### 3.4. 人物
**検出させる元画像**
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/02b5422f-0c58-0856-6a64-3790c4977e6d.jpeg">

**ドミナントカラー**
<img width="320" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/d18d25b9-7f30-1de3-66ea-344ed7ae707c.jpeg">

### 3.5. 富士山
**検出させる元画像**
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/d90434af-a665-a5f6-83e2-6f2e55e63fee.jpeg">

**ドミナントカラー**
<img width="320" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/28676668-9764-c792-4077-00cccbebbcaa.jpeg">

### 3.6. 熊本城
**検出させる元画像**
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/8cec9b1f-1bd5-9cd5-1540-02b71c04bb0d.jpeg">

**ドミナントカラー**
<img width="320" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/b08de552-5c5f-511f-fd3a-4881703d247b.jpeg">

### 3.7. 街
**検出させる元画像**
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/5c0cf874-28e4-9bb7-230d-16a49e28ddcb.jpeg">

**ドミナントカラー**
<img width="320" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/7a3db864-3bc6-019f-96c7-b0faad7acb7d.jpeg">

### 3.8. 野菜
**検出させる元画像**
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/e3180831-f3b2-0d46-3a15-d121c0d19555.jpeg">

**ドミナントカラー**
<img width="320" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/3adae90f-16b5-c9f4-c7fa-793cc1d65a93.jpeg">

### 3.9. 猫
**検出させる元画像**
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/61ee0313-6719-2de3-67d2-31711161a3a7.jpeg">

**ドミナントカラー**
<img width="320" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/1a7e7cac-c2fc-ea87-832b-bf1e778ce898.jpeg">

### 3.10. デスク
**検出させる元画像**
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/0e2fe664-5a6c-75cf-2250-ad80d7c9768e.jpeg">

**ドミナントカラー**
<img width="320" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/cbfb4286-cd94-ea92-da4e-e2897589bc50.jpeg">

### 3.11. 景色
**検出させる元画像**
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/420636c2-9844-8211-8d4c-b50aa9bcc913.jpeg">

**ドミナントカラー**
<img width="320" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/6cc569bd-24b5-e45a-d599-ce269990ec2f.jpeg">

### 3.12. 駐車場
**検出させる元画像**
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/081fa0e1-0766-39ac-b373-ef28abc526d2.jpeg">

**ドミナントカラー**
<img width="320" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/114621/3364a604-b637-4d95-81d3-bd24850bc3e1.jpeg">


<BR>
<BR>
おしまい。。。