日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PIL库自我学习总结及应用(美白,磨皮,搞笑图片处理)

發(fā)布時間:2024/4/17 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PIL库自我学习总结及应用(美白,磨皮,搞笑图片处理) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Hello!今天我們來學(xué)習(xí)一下這個神奇的圖片處理的第三方函數(shù)庫——PIL庫

(本blog部分圖片及代碼來自網(wǎng)絡(luò))

這是一個支持圖像存儲、顯示和處理的函數(shù)庫,它能夠處理幾乎所有圖像格式,可以完成對圖像的縮放、裁剪、疊加以及圖像添加條紋,文字等信息等的操作。

首先是利用pip下載一個:

?

它有許多子庫,例如:Image、ImageChops、ImageDraw等等,他們各有神通,發(fā)揮著自己的作用,

首先我們當(dāng)然學(xué)習(xí)的是經(jīng)典的Image子庫;

方法描述
Image.open(filename)根據(jù)參數(shù)加載圖像文件
Image.new(mode,size,color)根據(jù)給定參數(shù)創(chuàng)建一個新的圖像
Image.open(StringIO.StringIO(buffer))從字符串中獲取圖像
Image.frombytes(mode,size,data)根據(jù)像素點data創(chuàng)建圖像
Image.verify()對圖像文件完整性進行檢查,返回異常

?

?

?

?

?

參考:http://pillow-cn.readthedocs.io/zh_CN/latest/reference/index.html?

?首先對于使用的工具:基于WIN10,Python3.7.2,Pillow5.4.1

對于Image模塊

首先我認(rèn)識到一個簡單的例子:讀取下載好的圖片并將它可視化(代碼如下):

from PIL import Image im = Image.open('test1.jpg') # 讀取圖片 im.show() # 可視化

 這里的“test.jpg”是我剛剛下載好的來自網(wǎng)絡(luò)的圖片放置在桌面上;

然后運行!

通過使用相關(guān)的圖片查看器,我們就可以打開自己桌面上圖片進行可視化了,我們甚至還可以用其他代碼對圖片進行調(diào)整:

from PIL import Image im = Image.open('test1.jpg') # 讀取圖片 im.rotate(45).show() # 將圖片旋轉(zhuǎn),并用系統(tǒng)自帶的圖片工具顯示圖片

諾!對比上圖,我們的圖片被旋轉(zhuǎn)了45度,這些只是比較基本的操作,我們依然可以對圖片進行更加多的改變!

圖像灰度化處理

這是一張彩色的建筑圖,我覺得太鮮艷了,又比較喜歡一種黑白色調(diào)顯得低調(diào)深沉就像我一樣,那么我可以使用下面的代碼:

from PIL import Image img = Image.open("test3.jpg") # 灰度化:將RGB/RGBA -> L img = img.convert("L") img.show()

效果如下:

不得不說,很耐斯!

還有很多效果滴:

在Image.filter(filter)中:

# BLUR - 模糊處理
# CONTOUR - 輪廓處理
# DETAIL - 增強
# EDGE_ENHANCE - 將圖像的邊緣描繪得更清楚
# EDGE_ENHANCE_NORE - 程度比EDGE_ENHANCE更強
# EMBOSS - 產(chǎn)生浮雕效果
# SMOOTH - 效果與EDGE_ENHANCE相反,將輪廓柔和
# SMOOTH_MORE - 更柔和
# SHARPEN - 效果有點像DETAIL
再對“test3.jpg”進行處理:

from PIL import Image from PIL import ImageFilter testimg = Image.open("test3.jpg") testimg.show() filterimg = testimg.filter(ImageFilter.EMBOSS) filterimg.show()

(浮雕效果)

?

(輪廓效果)

?…………還有很多…………

and各種處理方案:

Image.getbands()

Image.geebbox()

Image.getcolors(maxcolor=256)

Image.getdata(band=None)(一般和list()結(jié)合使用)

Image.getextrema()

Image.getpixel((x,y))

Image.histogram(mask=None,extrema=None)
接下來是縮略圖的學(xué)習(xí),我們有時候為了節(jié)約儲存空間,會將原來的圖片進行壓縮,通過等比例壓縮之后會變成縮略圖,那么如何用Image庫來實現(xiàn)呢??

話不多說,先上代碼!

from PIL import Image im = Image.open('test3.jpg') size = im.size if size[0] > size[1]:rate = float(200) / float(size[0]) else:rate = float(128) / float(size[1]) new_size = (int(size[0] * rate), int(size[1] * rate)) new = im.resize(new_size, Image.BILINEAR) new.save('n.jpg') im.show('n.jpg')

想知道這是什么神仙代碼嗎?

看得出我還是使用了“test3.jpg”這張圖,我想要將它壓縮并另存為一個壓縮后的圖片存到桌面上,然后打開看看效果如何;

很明顯桌面上多了一個新圖片,這就是另存的壓縮圖了;

?查看效果如上,這個圖片顯然比原圖小了很多,拉近了看還是十分模糊的呢,這就是等比例縮小后的縮略圖“n.jpg”啦~?

?接下來就是自制“美顏相機”啦~

我們的生活現(xiàn)在離不開手機,手機又剛好有自拍功能,這滿足了我們沒事“卡擦卡擦”拍照看看自己的盛世美顏的需求,但是也不是每一次拍照都能很好地滿足我們的虛榮心和好勝的心理,畢竟……我們對自己可是很嚴(yán)格的!!!特別是顏值!!!

所以才會催生出各種P圖軟件,那么我們自己可不可以做呢??

當(dāng)然~

代碼呢?來人!上代碼!!

from PIL import Image from PIL import ImageEnhance import cv2 import numpy as np# image = Image.open('test4.jpg') #image.show() def BrightnessEnhancement(brightness):image = Image.open('test4.jpg')enh_bri = ImageEnhance.Brightness(image) # brightness =1.5image_brightened = enh_bri.enhance(brightness)image_brightened.show()def ContrastEnhancement(contrast):image = Image.open('test4.jpg')enh_con = ImageEnhance.Contrast(image) # contrast =1.5image_contrasted = enh_con.enhance(contrast)image_contrasted.show()def ColorEnhancement(color): image = Image.open('test4.jpg')enh_col = ImageEnhance.Color(image) # color =0.8image_colored = enh_col.enhance(color)image_colored.show()def SharpnessEnhancement(sharpness):image = Image.open('test4.jpg')enh_sha = ImageEnhance.Sharpness(image) # sharpness = 2image_sharped = enh_sha.enhance(sharpness)image_sharped.show()def Filter(image):image =cv2.imread('test4.jpg')Remove=cv2.bilateralFilter(image,0,0,10)cv2.imshow('filter',Remove)cv2.waitKey(0)cv2.destroyAllWindows() # res = np.uint8(np.clip((1.2 * image + 10), 0, 255)) # tmp = np.hstack((dst, res)) # cv2.imshow('bai',res)def WhiteBeauty(image,whi):image =cv2.imread('test4.jpg')white = np.uint8(np.clip((whi * image + 50), 0, 255))cv2.imshow('bai',white)cv2.waitKey(0)cv2.destroyAllWindows()if __name__ =="__main__":filepath = 'test4.jpg'#原始圖像brightness = 1.5contrast = 0.2color=1.9sharpness=0.1BrightnessEnhancement(brightness)ContrastEnhancement(contrast)ColorEnhancement(color)SharpnessEnhancement(sharpness)whi = 1.2image =cv2.imread('test4.jpg')Filter(image)WhiteBeauty(image,whi)

這是原圖:

 

這是美白后的:

 

?灰度處理:

以及等等……(受限于篇幅不一一列舉)

?對一個GIF每一幀進行提取:

?

from PIL import Image im = Image.open('gif2.gif') # 讀入一個GIF文件 try:im.save('aa{:02d}.png'.format(im.tell()))while True:im.seek(im.tell()+1)im.save('new{:02d}.png'.format(im.tell())) except:print("處理結(jié)束")

 結(jié)果:

?接下來就是激動人心的時刻了!我們要做動圖!!

首先要下載一個第三方庫——imageio

然后就可以上代碼了:

import imageiodef create_gif(image_list, gif_name):frames = []for image_name in image_list:frames.append(imageio.imread(image_name))# Save them as frames into a gif imageio.mimsave(gif_name, frames, 'GIF', duration = 1)returndef main():image_list = ['t1.png','t2.png','t3.png','t4.png']gif_name = 'finallgif.gif'create_gif(image_list, gif_name)if __name__ == "__main__":main()

效果:

?

由于有些分辨率的不統(tǒng)一所以會有黃邊,不要在意呀~

轉(zhuǎn)載于:https://www.cnblogs.com/iconangle/p/10683223.html

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的PIL库自我学习总结及应用(美白,磨皮,搞笑图片处理)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。