ホームページ  >  記事  >  バックエンド開発  >  Python版で写真やロゴのメインカラー(カラートレンド)を取得する

Python版で写真やロゴのメインカラー(カラートレンド)を取得する

高洛峰
高洛峰オリジナル
2016-10-18 14:59:051449ブラウズ

Google や Baidu を使用して写真を検索すると、写真の色のオプションがあることがわかります。これは人為的に分割されているに違いないと考える人もいるかもしれません。もちろん冗談ですが、大量の写真は機械によってのみ認識されます。
この機能はPythonを使用して実装できますか?答えは、以下のコード: Python の PIL モジュールの強力な画像処理機能を使用して行うことができます:

import colorsys

def get_dominant_color(image):

#出力 RGB カラー値のカラー モード変換。


Image = image.convert('RGBA')

#サムネイル生成、計算量削減、CPU負荷軽減

image.thumbnail((200, 200))

max_s core = None

dominant_color = None

for count, (r, g, b, a) in image.getcolors(image.size[0] * image.size[1]):

# 純粋な黒をスキップ

if a == 0:

続き

彩度 = colorsys.rgb_to_hsv(r / 255.0, g / 255.0, b / 25 5.0)[1]

* 4130 + b * 802 + 4096 + 131072) >> 13, 235)

y = (y -16.0) /(235-16)

#ハイライト色を無視してください。

if score > max_score:

max_score = score

dominant_color = (r, g, b)

return do minant_color

使用方法:

from PIL import Image

print get_dominant_color(Image .open('logo.jpg'))

これは rgb カラーを返しますが、この値は非常に正確な範囲なので、どのように実装すればよいでしょうか 百度の写真のような色域はどうなるのでしょうか? ?

実際、方法は非常に簡単です。r/g/b はすべて 0 ~ 255 の値であり、これら 3 つの値を等間隔に分割し、それらを組み合わせて近似値を取得するだけです。例:0~127、128~255に分けて自由に組み合わせて8通りの組み合わせができ、代表的な色を選ぶだけです。

もちろん、私は例を示しているだけです。より細かく分割して、表示される色をより正確にすることもできます~~ 早速試してみましょう

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:パイソンの子孫次の記事:パイソンの子孫