[Python]Google images downloadを用いて簡単に画像取得

Googleから画像を大量に取得してくれる便利なPythonライブラリがあったので使用方法をメモとして残しておきます。

#動作環境
Windows10 Pro
Python 3.6

#Google images download
Google images downloadとは*Hardik Vasa*さんが作成したPythonスクリプトです
Github：https://github.com/hardikvasa/google-images-download

簡単に欲しい画像を取得してくれるので滅茶苦茶便利です

##導入方法
[インストール方法](https://google-images-download.readthedocs.io/en/latest/installation.html)
pipかGitでインストールできますのでお好きな方でお試しください

私はpipでインストールしました

```powershell
PS> pip install google_images_download
```


##使用方法
以下のコマンドを端末を開いて実行します

```Powershell
PS> googleimagesdownload --keywords "<search_word>, <search_word>..." --limit <limit_number>
```

`<search_word>`と`<limit_number>`には具体的な値を代入してください
例)

```Powershell
PS> googleimagesdownload --keywords "りんご,もも" --limit 20
```

オプションの説明については[公式ドキュメント](https://google-images-download.readthedocs.io/en/latest/arguments.html)に記載されていますのでそちらをご覧ください

##実際に使用してみる
具体的な値を入れて画像を取得してみます。
検索ワード：りんご,もも
取得枚数  : 20
`-o`オプションでダウンロードしたいディレクトリ先のパスを設定しています
`-o`オプションを付けなければコマンドを実行したディレクトリ直下に`downloads`フォルダが作成されます

```Powershell
PS> googleimagesdownload --keywords "りんご,もも" --limit 20 -o "/fruit"
Item no.: 1 --> Item name = \u308a\u3093\u3054
Evaluating...
Starting Download...
Completed Image ====> 1.eyebg_center.jpg
Completed Image ====> 2.tsugaru.png
Completed Image ====> 3.wasefuji.png
Completed Image ====> 4.large.jpg
Completed Image ====> 5.Fotolia_144834045_Subscription_Monthly_M-e1511750334744.jpg
Completed Image ====> 6.sekaiichi.png
Completed Image ====> 7.51GHTXFiklL.jpg
Completed Image ====> 8.05036_2012_0115_IMG_4671.jpg
Completed Image ====> 9.joryu-box-2.jpg
Completed Image ====> 10.fuji.png
Completed Image ====> 11.07051618_595c92d5513e0.jpg
Completed Image ====> 12.51kmweJuOjL._SX425_.jpg
Completed Image ====> 13.41wPeSYQ47L.jpg
Completed Image ====> 14.jona.png
Completed Image ====> 15.0A3A7443.jpg
Completed Image ====> 16.IMG_7577.JPG
Completed Image ====> 17.17438.jpg
Completed Image ====> 18.fdfr_apple-1.jpg
Completed Image ====> 19.img_cc8194214c194a21ca74c28b4dda346a604634.jpg
Completed Image ====> 20.natsuakari.JPG

Errors: 0


Item no.: 2 --> Item name = \u3082\u3082
Evaluating...
Starting Download...
Completed Image ====> 1.o0800108811977554449.jpg
Completed Image ====> 2.t02200312_0800113511010460443.jpg
Completed Image ====> 3.17587190_1173094239482876_3589664121886343168_n-819x1024.jpg
Completed Image ====> 4.t02200310_0367051710420131740.jpg
Completed Image ====> 5.dd52a09052c43a346491162c23540598-15.jpg
Completed Image ====> 6.t01600170_0160017010203310557.jpg
Invalid or missing image format. Skipping...
Completed Image ====> 7.momo.jpg
Completed Image ====> 8.DSC_5434-600x600.jpg
Completed Image ====> 9.6abfb50b8030f24242e8bd15e02bb078.png
Completed Image ====> 10.o0800113612695828734.jpg
Completed Image ====> 11.momocrop_1280x960.jpg
Invalid or missing image format. Skipping...
Invalid or missing image format. Skipping...
Completed Image ====> 12.28818478937e3fb5a81d5c61f3f985e2.jpg
Completed Image ====> 13.ohtaniyuhya2.jpg
Completed Image ====> 14.momo0711.jpg
Completed Image ====> 15.8199e2a4b11b68fb7d7dfe354b342de8.jpg
Completed Image ====> 16.%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A31.png
Completed Image ====> 17.momo050-e1530415714668.jpg
Completed Image ====> 18.a6e9474b-e613-4aec-88e2-909a7c7b1467.jpg
Completed Image ====> 19.IjyQhYKS.jpg
Completed Image ====> 20.Twicemomo-e1460001081786.png

Errors: 3


Everything downloaded!
Total errors: 3
Total time taken: 21.02908730506897 Seconds
```
ダウンロードができればオプションで指定したディレクトリが作成され画像が保存されているはず！！
オプションで指定していなければ`downloads`がコマンドを実行した直下に作成されています

```
PS C:\fruit> ls
    ディレクトリ: C:\fruit
Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----       2019/06/13     11:44                もも
d-----       2019/06/13     11:43                りんご
```

できた！！滅茶苦茶簡単！！


#最後に
Google images downloadの導入から使用するまで5分もかかりませんね
機械学習をしている人にとっては画像収集のツールとしてとてもワンダフルなものではないでしょうか
私自身も機械学習を勉強しているのでこれからもお世話になると思います

#おまけ
google images downloadはライブラリとしてインポートすることが出来ます
自分で使いやすいようにPythonでカスタマイズしてみました

```Python:fetch_image.py
from google_images_download import google_images_download

def fetch_image(params_dict):
    response = google_images_download.googleimagesdownload()
    arguments = {
      "keywords"        : params_dict['search_keywords'],
      "limit"           : params_dict['limit'],
      "format"          : params_dict['image_format'],
      "output_directory": params_dict['output_directory'],
      "no_directory"    : True
    }
    response.download(arguments)

def input_argument():
    params_dict = {}

    search_keywords=input('search keywords:')
    while not search_keywords:
      search_keywords=input('search keywords:')

    limit=input('How much do you want a image?:')
    while not limit.isdigit():
      limit=input('How much do you want a image?:')

    print("0:'jpg',1:'gif',2:'png',3:'bmp',4:'svg',5:'webp',6:'ico',7:'raw'")
    image_format = ['jpg','gif','png','bmp','svg','webp','ico','raw']
    image_format_number = input('Please select image format number(0~7):')
    while not image_format_number.isdigit() or int(image_format_number) > 7:
      image_format_number = input('Please select image format number(0~7):')

    output_directory = input('Where are you saving download image?')
    if not output_directory:
      output_directory = 'downloads'

    params_dict['search_keywords'] = search_keywords
    params_dict['limit'] = limit
    params_dict['image_format'] = image_format[int(image_format_number)]
    params_dict['output_directory'] = output_directory

    return params_dict

def main():
    params_dict=input_argument()
    fetch_image(params_dict)

if __name__ == '__main__':
    main()
```

#参考
[Google images download Document](https://google-images-download.readthedocs.io/en/latest/index.html)