Pythonで画像の主要な色を取得する方法


  1. OpenCVを使用する方法:

    import cv2
    import numpy as np
    def get_dominant_color_opencv(image_path):
    # 画像の読み込み
    image = cv2.imread(image_path)
    # 画像をRGBからHSVに変換
    hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
    # ヒストグラムを作成
    hist = cv2.calcHist([hsv_image], [0], None, [180], [0, 180])
    # ヒストグラムのピークを取得
    dominant_color = np.argmax(hist)
    return dominant_color
  2. PILを使用する方法:

    from PIL import Image
    import numpy as np
    def get_dominant_color_pil(image_path):
    # 画像の読み込み
    image = Image.open(image_path)
    # 画像をRGBに変換
    rgb_image = image.convert('RGB')
    # 画像をNumPy配列に変換
    np_image = np.array(rgb_image)
    # ヒストグラムを作成
    hist, _ = np.histogramdd(np_image.reshape(-1, 3), bins=(16, 16, 16))
    # ヒストグラムのピークを取得
    dominant_color = np.unravel_index(np.argmax(hist), hist.shape)
    return dominant_color

上記のコード例では、image_pathに画像のファイルパスを指定して、主要な色を取得します。返される値は、ヒストグラムのピークを表す色の値です。色の表現方法は、使用するライブラリによって異なる場合があります。必要に応じて、色の変換や処理を行ってください。