Python通過(guò)PIL獲取圖片主要顏色并和顏色庫(kù)進(jìn)行對(duì)比的方法
本文實(shí)例講述了Python通過(guò)PIL獲取圖片主要顏色并和顏色庫(kù)進(jìn)行對(duì)比的方法。分享給大家供大家參考。具體分析如下:
這段代碼主要用來(lái)從圖片提取其主要顏色,類似Goolge和Baidu的圖片搜索時(shí)可以指定按照顏色搜索,所以我們先需要將每張圖片的主要顏色提取出來(lái),然后將顏色劃分到與其最接近的顏色段上,然后就可以按照顏色搜索了。
在使用google或者baidu搜圖的時(shí)候會(huì)發(fā)現(xiàn)有一個(gè)圖片顏色選項(xiàng),感覺(jué)非常有意思,有人可能會(huì)想這肯定是人為的去劃分的,呵呵,有這種可能,但是估計(jì)人會(huì)累死,開(kāi)個(gè)玩笑,當(dāng)然是通過(guò)機(jī)器識(shí)別的,海量的圖片只有機(jī)器識(shí)別才能做到。
那用python能不能實(shí)現(xiàn)這種功能呢?答案是:能
利用python的PIL模塊的強(qiáng)大的圖像處理功能就可以做到,下面上代碼:
def get_dominant_color(image):
#顏色模式轉(zhuǎn)換,以便輸出rgb顏色值
image = image.convert('RGBA')
#生成縮略圖,減少計(jì)算量,減小cpu壓力
image.thumbnail((200, 200))
max_score = None
dominant_color = None
for count, (r, g, b, a) in image.getcolors(image.size[0] * image.size[1]):
# 跳過(guò)純黑色
if a == 0:
continue
saturation = colorsys.rgb_to_hsv(r / 255.0, g / 255.0, b / 255.0)[1]
y = min(abs(r * 2104 + g * 4130 + b * 802 + 4096 + 131072) >> 13, 235)
y = (y - 16.0) / (235 - 16)
# 忽略高亮色
if y > 0.9:
continue
# Calculate the score, preferring highly saturated colors.
# Add 0.1 to the saturation so we don't completely ignore grayscale
# colors by multiplying the count by zero, but still give them a low
# weight.
score = (saturation + 0.1) * count
if score > max_score:
max_score = score
dominant_color = (r, g, b)
return dominant_color
使用方法:
from PIL import Image
print get_dominant_color(Image.open('logo.jpg'))
這樣就會(huì)返回一個(gè)rgb顏色,但是這個(gè)值是很精確的范圍,那我們?nèi)绾螌?shí)現(xiàn)百度圖片那樣的色域呢??
其實(shí)方法很簡(jiǎn)單,r/g/b都是0-255的值,我們只要把這三個(gè)值分別劃分相等的區(qū)間,然后組合,取近似值。例如:劃分為0-127,和128-255,然后自由組合,可以出現(xiàn)八種組合,然后從中挑出比較有代表性的顏色即可。
當(dāng)然我只是舉一個(gè)例子,你也可以劃分的更細(xì),那樣顯示的顏色就會(huì)更準(zhǔn)確~~大家趕快試試吧
希望本文所述對(duì)大家的python程序設(shè)計(jì)有所幫助。
- Python3中正則模塊re.compile、re.match及re.search函數(shù)用法詳解
- python 3.7.0 下pillow安裝方法
- Python實(shí)現(xiàn)更改圖片尺寸大小的方法(基于Pillow包)
- python正則表達(dá)式re之compile函數(shù)解析
- python通過(guò)pil將圖片轉(zhuǎn)換成黑白效果的方法
- python安裝pil庫(kù)方法及代碼
- python使用pil進(jìn)行圖像處理(等比例壓縮、裁剪)實(shí)例代碼
- python中PIL安裝簡(jiǎn)單教程
- python通過(guò)pil為png圖片填充上背景顏色的方法
- Python中請(qǐng)不要再用re.compile了
- Python實(shí)現(xiàn)圖片裁剪的兩種方式(Pillow和OpenCV)
- python3讀取圖片并灰度化圖片的四種方法(OpenCV、PIL.Image、TensorFlow方法)總結(jié)
- Python的PIL庫(kù)中g(shù)etpixel方法的使用
- Python3安裝Pillow與PIL的方法
- Linux上安裝Python的PIL和Pillow庫(kù)處理圖片的實(shí)例教程
- python實(shí)現(xiàn)通過(guò)pil模塊對(duì)圖片格式進(jìn)行轉(zhuǎn)換的方法
- python使用PIL模塊獲取圖片像素點(diǎn)的方法
- Python圖像處理庫(kù)PIL詳細(xì)使用說(shuō)明
相關(guān)文章
python實(shí)現(xiàn)nao機(jī)器人手臂動(dòng)作控制
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)nao機(jī)器人手臂動(dòng)作控制,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
django使用admin站點(diǎn)上傳圖片的實(shí)例
今天小編就為大家分享一篇django使用admin站點(diǎn)上傳圖片的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-07-07
Pandas出現(xiàn)KeyError的問(wèn)題解決及分析
本文主要介紹了Pandas出現(xiàn)KeyError的問(wèn)題解決及分析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01
詳解Ubuntu環(huán)境下部署Django+uwsgi+nginx總結(jié)
這篇文章主要介紹了Ubuntu環(huán)境下部署Django+uwsgi+nginx總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
修改Python的pyxmpp2中的主循環(huán)使其提高性能
這篇文章主要介紹了修改Python的pyxmpp2中的主循環(huán)使其提高性能,pyxmpp2是Python中使用需XMPP協(xié)議的一個(gè)常用工具,要的朋友可以參考下2015-04-04
python代碼有一行標(biāo)黃問(wèn)題的解決方案
這篇文章主要介紹了python代碼有一行標(biāo)黃問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02
Python3.4實(shí)現(xiàn)從HTTP代理網(wǎng)站批量獲取代理并篩選的方法示例
這篇文章主要介紹了Python3.4實(shí)現(xiàn)從HTTP代理網(wǎng)站批量獲取代理并篩選的方法,涉及Python網(wǎng)絡(luò)連接、讀取、判斷等相關(guān)操作技巧,需要的朋友可以參考下2017-09-09

