「どうぶつの森 ポケットキャンプ」のプロフィール画像から「アイコン」と「名前」と「ID」を抽出できる gem を作りました

crop-pokemori-prof-image

crop-pokemori-prof-image という gem を作りました。この gem は、「どうぶつの森 ポケットキャンプ」のプロフィール画像から「アイコン」と「名前」と「ID」の画像部分を抽出して、それぞれを画像ファイルとして出力します。

もし抽出の対象に指定した画像ファイルが「どうぶつの森 ポケットキャンプ」のプロフィール画像でなければ何も出力しません。

ソースコードは以下にあります。

RubyGems のページはこちら

ドキュメント

詳しいドキュメントはこちらになります。

具体例

具体例を示します。

プロフィール画像である sample.jpg が以下のようにあったとします*1

f:id:gregminster:20171224200725j:plain

この画像に対して CropPokemoriProfImage.crop_single_image メソッドを施すと、以下の4つのファイルが生成されます。

1. sample_face.jpg

f:id:gregminster:20171224200911j:plain

2. sample_name.jpg

f:id:gregminster:20171224200941j:plain

3. sample_id_number.jpg

f:id:gregminster:20171224200954j:plain

4. sample_whole_id_part.jpg

f:id:gregminster:20171224201014j:plain

複数画像を一気に処理することもできる

上記の例では crop_single_image メソッドを用いましたが、crop_multiple_image メソッドを用いることで特定のディレクトリ配下にあるプロフィール画像すべてを対象にすることができます。

発展性

以前に私が作った collect_twitter_media という gem と、character_recognition_by_vision_api という gem と組み合わせると、以下のようなしくみが完成します。

1. Twitter のタイムラインから根こそぎ画像を集める

collect_twitter_media を使うことで、Twitter の自分のタイムラインのツイートに添付されている画像をかき集めることができます。

2. 集めた画像に対して crop-pokemori-prof-image を施す

「1.」で集めた画像に対して今回の gem を施せば、ポケ森のプロフィール画像から抽出された各画像だけが保存できます。

3. 抽出された画像の文字をテキスト化する

「2.」で抽出した画像に対して character_recognition_by_vision_api を施せば、「名前」や「ID(番号)」の部分がテキストデータとして保存できます。保存できたデータをもとにして CSV ファイルを作るなり、ウェブページを作るなりすることもできるでしょう。

よくないところ

画像判定と抽出のアルゴリズムが投げやりなために精度が悪いです。例えば、キャプチャ画面のサイズの比率が16:9(9:16)でない時点でミスります。すなわち iOS の場合は全滅です。

特定の画像から特定の判別を行うというのはスクレイピングに近いところもあり、ある程度はハードコーディングになるのは仕方がないところだとは思っています。

*1:ガウスぼかしをかけています

Powered by はてなブログ