↑みたいに、メインカラーをPythonで抽出します。使うものscikit-learn(k-means法)PIL、OpenCV(画像周り)サンプルデータ元々はDCGANモデル検証でのイラストの色変換などのためのデータセットでカラーヒントを用意するためだったのですが、ここではフリー素材の写真を使ってみます。花の画像を対象に進めていきます。cv2.imread('./flower.jpg')OpenCV、読み込んだままだとカラーチャンネルの順番がRGBになっていないようなので変換をしておきます。カラーチャンネル)の2次元の形式に変換しておきます。3)クラスタリングk-means法でクラスタリングを行います。各ピクセルの色で、指定したクラスタ数でクラスタリングされ、その各クラスタの中央の座標の色をメインカラーとして扱います。引数のn_clusterはクラスター数となります。今回はメインカラーを5色算出したいので、5を指定していますが、適宜調整してください。KMeans(n_clusters=5)対象画像に対してクラスタリングを行います。画像サイズによっては少し時間がかかります。いう属性に、各クラスタの中央の値(RGBの値)が格納されます。3)の配列となりました。色を表示してみるRGBの配列だとイメージがつきづらいので、PILを使って単色画像でそれぞれ表示してみます。Pythonでは、02xと指定することで、0~255までの値を16進数の00~ffのフォーマットにしてくれるので、それを使って#ffffffといった文字列を用意してPILに渡します。255)'#ffffff'浮動小数点数は不要なので、キャストしておきます。copy=False)ループで回す都合、Jupyter上で全ての画像を表示するためにdisplay関数を使用します。display(color_img)元画像を表示してみて、比較してみます。180))いい感じです。おまけで、PILを使って背景をグレーにし、横並びの画像を作ってみます。上下左右余白15pxずつの画像を作ります。color='#333333')この段階では上記の用意した画像は、グレーの横長画像です。この画像に、各クラスタの色の画像をペーストしていきます。PILのpaste関数を使います。引数のboxで、左の余白値、上の余白値といった具合でペーストする位置を設定できるので、ループのインデックスを加味して位置を指定します。valueといった形で扱えるのでシンプルです。CCの探索画面みたいなカラーセット画像を用意することができました。他の画像で試して見る関数化して、他の写真でも試してみましょう。対象の画像のメインカラーを算出し、色を横並びにしたPILの画像を取得する。色を横並びにしたPILの画像。元画像の小さくリサイズしたPILの画像を取得する。