crop-pokemori-prof-image
crop-pokemori-prof-image
という gem を作りました。この gem は、「どうぶつの森 ポケットキャンプ」のプロフィール画像から「アイコン」と「名前」と「ID」の画像部分を抽出して、それぞれを画像ファイルとして出力します。
もし抽出の対象に指定した画像ファイルが「どうぶつの森 ポケットキャンプ」のプロフィール画像でなければ何も出力しません。
ソースコードは以下にあります。
RubyGems のページはこちら。
ドキュメント
詳しいドキュメントはこちらになります。
具体例
具体例を示します。
プロフィール画像である sample.jpg
が以下のようにあったとします*1。
この画像に対して CropPokemoriProfImage.crop_single_image
メソッドを施すと、以下の4つのファイルが生成されます。
1. sample_face.jpg
2. sample_name.jpg
3. sample_id_number.jpg
4. sample_whole_id_part.jpg
複数画像を一気に処理することもできる
上記の例では 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:ガウスぼかしをかけています