python API

ゆうき( @BASEBALLY15 )です^^

深層学習を勉強していて,大量の画像が必要なのですが,一括で画像をダウンロードする方法はないですか・・・?

ありますよ^^
Flickerという,フリー画像を紹介しているサイトの APIを使うと,
画像を一括でダウンロード出来ますよ.

FlickerAPIを使う方法を教えてください・・・

分かりました^^

(Udemy『画像判定AIアプリ開発・パート1』を参考,AnacondaのSpyderを使用)

FlickerAPIを取得する方法

画像を保存するためのファイルを作ろう!

まず,最初に,画像を保存するためのファイルを作っておきます.

FlickrAPIファイル

キーとシークレットを取得しよう!

『Flickr』と検索し,以下のサイトを開きます.

FlickrAPI取得その1

そして,URLの部分を以下のように変更し,『Create an App』をクリックします.

FlickrAPI取得その2

すると,以下のような画面が表示されるので,矢印で示したところをクリックします.

その次に,以下の画面の『APPLY FOR A NON-COMMERCIAL KEY』をクリックします.

すると,このような画面が表示されます.この画面では,APIを取得する目的を書く必要があります.

Google翻訳で,「~の画像を分類するため.」と検索すると,英語に翻訳してくれるので,

それを,以下の『What are you building?』のところに貼り付けるといいと思います^^

『SUBMIT』をクリックすると,キーとシークレットが表示されます.

メモ帳に書いておくなど,大切に保管しておいてください.

それでは,FlickrAPIを使って,画像を取得したいと思います⤵

FlickrAPIを使って,画像を取得してみよう!

保存名:veg_download.py

まずは,ライブラリをご紹介します.

ライブラリ

#FlickrAPIを使うためのライブラリ
from flickrapi import FlickrAPI

#URLを開くためのライブラリ
from urllib.request import urlretrieve

#ファイルやディレクトリを使うためのライブラリ
import os

#時間に関するライブラリ
import time

#コマンドプロンプトなどを使うためのライブラリ
import sys

次に,FlickrAPIを使って画像を取得するためのコードをご紹介します.

コード

#キーとシークレットの情報
key = "oooooooooooooooooooooo"

sercret = "xxxxxxxxxxxxxxxxxxx"


#待ち時間を1秒とする
wait_time = 1


#コマンドライン引数の2番目の値を取得する(『download.py lion』のlionの部分)
vegetables_name= sys.argv[1]


#画像を保存するディレクトリを指定
savedir = "./" + vegetables_name


#FlickrAPI(キー, シークレット,データフォーマット{json形式で受け取る})
flickr = FlickrAPI(key, sercret, format="parsed-json")

result = flickr.photos.search(
    text = animalname,#検索キーワード

    per_page = 400,#取得するデータ数

    media = "photos",#検索するデータの種類(写真)

    sort = "relevance",#取得するデータの並び順(関連順)

    safe_search = 1,#おかしなコンテンツを表示しない

    extras = "url_q, licence"#取得したいオプションの値(url_qは画像のアドレスが入っている情報,licenceは,ライセンス情報)
    )


#resultの"photos"を取得
photos = result["photos"]


#画像をフォルダに保存していく
for i, photo in enumerate(photos["photo"]):

    #URLを取得
    url_q = photo["url_q"]

    #保存する画像名を指定
    filepath = savedir + "/" + photo["id"] + ".jpg"

    #もし,既にfilepathが存在していたら,次のループに行く
    if os.path.exists(filepath):continue

    #もし,filepathが存在していなければ,
    #url_qをfilepathにダウンロードする
    urlretrieve(url_q, filepath)

    #アクセスを連発しないようにする
    time.sleep(wait_time)

次に,AnacondaPromptを開きます. そして,以下のようにコードを記述 します.

  1. activate tf140←TensorFlowで処理を行います.
  2. cd デスクトップ
  3. cd animalai
  4. cd lion
  5. python veg_download.py cabbage

これで,FlickrAPIを使って,画像を取得することが出来ます.

終わりに

今回は,FlickrAPIを取得して,画像をダウンロードする方法についてご紹介しました.

一枚一枚,保存するのはかなりの時間が掛かるので,ぜひこの方法を使ってみてください^^

それでは・・・

Q &A

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA