使用Python的PIL模塊來(lái)進(jìn)行圖片對(duì)比
在使用google或者baidu搜圖的時(shí)候會(huì)發(fā)現(xiàn)有一個(gè)圖片顏色選項(xiàng),感覺(jué)非常有意思,有人可能會(huì)想這肯定是人為的去劃分的,呵呵,有這種可能,但是估計(jì)人會(huì)累死, 開個(gè)玩笑,當(dāng)然是通過(guò)機(jī)器識(shí)別的,海量的圖片只有機(jī)器識(shí)別才能做到。
那用python能不能實(shí)現(xiàn)這種功能呢?答案是:能
利用python的PIL模塊的強(qiáng)大的圖像處理功能就可以做到,下面上代碼:
import colorsys
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)確~~大家趕快試試吧
PS:通過(guò)pil生成縮略圖的簡(jiǎn)單代碼
如果是單純地生成縮略圖,我們可以通過(guò)pil很簡(jiǎn)單地辦到,這段代碼會(huì)強(qiáng)行將圖片大小修改成250x156:
from PIL import Image
img = Image.open('sharejs.jpg')
img = img.resize((250, 156), Image.ANTIALIAS)
img.save('sharejs_small.jpg')
- Python圖像處理PIL各模塊詳細(xì)介紹(推薦)
- Python Image模塊基本圖像處理操作小結(jié)
- Python內(nèi)置模塊turtle繪圖詳解
- 在Python中使用PIL模塊處理圖像的教程
- python處理圖片之PIL模塊簡(jiǎn)單使用方法
- 使用Python中的tkinter模塊作圖的方法
- 使用Python的turtle模塊畫圖的方法
- python使用PIL模塊實(shí)現(xiàn)給圖片打水印的方法
- Pycharm導(dǎo)入Python包,模塊的圖文教程
- python通過(guò)pil模塊獲得圖片exif信息的方法
- Python圖像處理模塊ndimage用法實(shí)例分析
相關(guān)文章
Python?Pexpect庫(kù)自動(dòng)化交互式進(jìn)程控制的expect_list方法解析
Pexpect是一個(gè)Python庫(kù),為自動(dòng)化和交互式進(jìn)程控制提供了豐富的功能,而expect_list方法是其功能強(qiáng)大且靈活的一部分,將詳細(xì)探討如何使用這一方法,并提供多個(gè)示例來(lái)說(shuō)明其應(yīng)用場(chǎng)景和功能2024-01-01
python實(shí)現(xiàn)鄰接表轉(zhuǎn)鄰接矩陣
這篇文章主要介紹了python實(shí)現(xiàn)鄰接表轉(zhuǎn)鄰接矩陣,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12
python登錄QQ郵箱發(fā)信的實(shí)現(xiàn)代碼
python登錄QQ郵箱發(fā)信的代碼,有需要的朋友可以參考下2013-02-02
python 爬蟲一鍵爬取 淘寶天貓寶貝頁(yè)面主圖顏色圖和詳情圖的教程
今天小編就為大家分享一篇python 爬蟲一鍵爬取 淘寶天貓寶貝頁(yè)面主圖顏色圖和詳情圖的教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05
靈活運(yùn)用Python 枚舉類來(lái)實(shí)現(xiàn)設(shè)計(jì)狀態(tài)碼信息
在python中枚舉是一種類(Enum,IntEnum),存放在enum模塊中。枚舉類型可以給一組標(biāo)簽賦予一組特定的值,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
使用Django搭建一個(gè)基金模擬交易系統(tǒng)教程
今天小編就為大家分享一篇使用Django搭建一個(gè)基金模擬交易系統(tǒng)教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11
解決Python計(jì)算矩陣乘向量,矩陣乘實(shí)數(shù)的一些小錯(cuò)誤
今天小編就為大家分享一篇解決Python計(jì)算矩陣乘向量,矩陣乘實(shí)數(shù)的一些小錯(cuò)誤,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08

