動かざることバグの如し

静かに頬を伝う涙が 私に知らせる これが初恋と

駅メモがエロ路線に走っているのは本当なのか

でんこの露出度がどんどん高くなっていってる説

駅メモという可愛いでんこを愛でる駅を軸にした位置取りゲーがある。

他のソシャゲと比べて、安易なエロ要素が少なく、エロというより萌えという感じだった。しかしながら某SNS界隈では、最近のでんこは変に露出度が高いという声をきく。つまり媚びだしてきたのではないか。。という考えである。

が、本当に露出度が高くなっていってるのだろうか。

初代でんこの「みろく」もなかなかの露出度だし、「みらい」もなかなかエロいポーズを決めている。

〜のほうがエロい格好してる、と言ってても水掛け論なので、でんこの画像から肌の総面積を計算して実際に露出度が高くなってきているのかを検証する。 必ずしも露出度が高い=エロいとは言えないが、1つの指標にはなると思う。

環境

手順

  • 使用するでんこの画像はアプリ内の正面画像
    • ひたすらスクショを撮る
    • もちろん全でんこなど持ってないので一部はネット等から取得する
    • 一部肌色と似ている部分があって、誤認識してしまうため予め加工しておく
    • ラッピングガチャなんて引いたことないので当然ノーマル衣装のみ
  • OpenCVで指定した範囲の色を抽出してグレースケール化したあとに2値化して肌の面積を求める
    • RGBよりHSVの方がいいらしいが、色の指定の仕方がよくわからなかったので今回はRGBにした
    • 2値化することで黒 - 白で肌の面積を求めることができる

コード

import numpy as np
import cv2
import glob
import os

img_files = glob.glob('/app/images/*.png')
for imgpath in img_files:
  basename = os.path.basename(imgpath)
  img_result_path = os.path.join('/app/images_result/', basename)
  img = cv2.imread(imgpath)
  lower = np.array([165, 155, 250])
  upper = np.array([240, 250, 255])
  img_mask = cv2.inRange(img, lower, upper)
  img_extract = cv2.bitwise_and(img, img, mask=img_mask) # 色抽出
  img_gray = cv2.cvtColor(img_extract, cv2.COLOR_BGR2GRAY) # グレースケール化
  ret, img_niti = cv2.threshold(img_gray, 100, 255, cv2.THRESH_BINARY) # 2値化
  target_area = cv2.countNonZero(img_gray) # 面積を求める
  print(target_area)
  # print(basename, round(white_area / img_gray.size * 100, 3))
  # print(round(target_area / img_gray.size * 100, 3))

  # 輪郭を描画
  ret, thresh = cv2.threshold(img_gray, 100 ,255 ,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
  contours, hierarchy = cv2.findContours(thresh, cv2.CHAIN_APPROX_SIMPLE, cv2.CHAIN_APPROX_SIMPLE)
  cv2.drawContours(img, contours, -1, (0,255,0), -1)

  cv2.imwrite(img_result_path, img)

結果

露出度が高いでんこランキングベスト5 意外にもにころが1位だった

名前 No. 値(px)
にころ 20 40379
みこと 37 37787
イムラ 19 33216
なつめ 47 29032
スピカ 48 27764

逆に露出度が低いでんこランキングも作ってみた

名前 No. 値(px)
マリン 53 14
ミオ 36 167
ナギサ 72 1764
ひまり 55 2256
るる 39 2324

マリンの14は明らかに検出がうまくできてない感ある。ミオは納得

うまく検出できている例

イカとか 結構露出あるように見えて実際には34位と平均。かわいい

f:id:thr3a:20190409135736p:plain

誤検出を除けば1位のミオ。もともと小顔なのでさらに露出度が低い。かわいい

f:id:thr3a:20190409222607p:plain

うまくいかなかった例

肌の部分が正しく検出できていないでんこもいくつかある。

エリア。今回肌色のみをターゲットにしたので褐色系は無理だった。よってランキングからも除外 けどかわいい

f:id:thr3a:20190409222739p:plain

いちほ。もはや服と肌が同一化している。かわいい

f:id:thr3a:20190409222941p:plain

まとめ

以上の肌面積をグラフにした。左が初代なので、右に行くほど新でんこである。上のような明らかな誤検出は除いてある。

f:id:thr3a:20190409135014j:plain

もうちょっと精度上げたい。あとでんこかわいい