画像のメインカラーを抽出してストライプを作る
#プロダクト系アウトプット
タイトルだけではちょっと分かりにくい.
例えば,
https://gyazo.com/cdcc79986ac05805884f121eddd38f9d
この画像から,メインで使われている色を抽出してそのキャラをイメージしたストライプ画像を生成します.
https://gyazo.com/021cd7ede1eb66f4bc80e2f6d8319e71
うまい具合に,「分かる人が見たらそのキャラだとなんとなく分かる」「分からない人には分からない」
程度に情報量がそぎ落とされていることが分かります.
なぜこれを作ろうと思ったのか?
人には皆「推しをイメージした物を身に着けたい」という願望があるからです.
分かる人にだけ分かるさりげなさなので人目についても大丈夫.
服だろうが財布だろうがtwitterの真面目なアカウントのヘッダでも何にでも合います.
【参考にさせていただきました】
https://qiita.com/simonritchie/items/396112fb8a10702a3644
メインカラーの抽出の部分を中心に.
【仕組み】
#Python で画像を読み込みクラスタリングを行います(k-means法)。
各ピクセルの色が指定されたクラスタ数でクラスタリングされて,各々のクラスタの中央の色をメインカラーとみなします.
cluster = KMeans(n_clusters=5)
また,今回は透過色を無視します(出力しません).左上の1ピクセルを透過色とし,それに近い色を無視します.
code:python
#透過色
trans_color = cv2_img0
#透過色(に近い色)を無視する(閾値は適当)
cluster_centers_arr = np.array(i for i in cluster_centers_arr if LA.norm(np.array(i-trans_color),2) >50 )
その後,抽出されたメインカラー群の中からランダムに一色選択し,ランダムな縦幅で塗る,ということを繰り返しストライプを生成します.
(そのため,必ずしも綺麗な色合いが出来るとは限らない)
何度か試してみてください.
コードはgithubに.
https://github.com/mizuWaterfield/stripe_from_img