您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“python的Pillow圖像處理方法怎么用”,內容詳細,步驟清晰,細節處理妥當,希望這篇“python的Pillow圖像處理方法怎么用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
被認為是python官方圖像處理庫
PIL非常適合于圖像歸檔以及圖像的批處理任務。可以使用PIL創建縮略圖,轉換圖像格式,打印圖像等等
PIL支持眾多的GUI框架接口,可以用于圖像展示
PIL庫同樣支持圖像的大小轉換,圖像旋轉,以及任意的仿射變換
pip install Pillow
from PIL import Image im = Image.open("picture.jpg") im.show()
from PIL import Image im = Image.open("picture.jpg") im.save("result.png")
from PIL import Image im = Image.open("picture.jpg") im.thumbnail((128, 128)) im.save("result.jpg")
獲取圖像的來源,如果圖像不是從文件讀取它的值就是None。
from PIL import Image im = Image.open("picture.jpg") print(im.format)
from PIL import Image im = Image.open("picture.jpg") print(im.info)
如果圖像的模式是“P”,則返回Image Palette類的實例;否則,將為None
from PIL import Image im = Image.open("picture.jpg") print(im.palette)
使用給定的變量mode和size生成畫板
from PIL import Image im= Image.new("RGB", (128, 128), "#FF0000") im.show()
圖像的模式,常見如下
L:8位像素,黑白
P:9位像素,使用調色板映射到任何其他模式
1:1位像素,黑白圖像,存成8位像素
RGB:3*8位像素,真彩
RGBA:4*8位像素,真彩+透明通道
CMYK:4*8位像素,印刷四色模式或彩色印刷模式
YCbCr:3*8位像素,色彩視頻格式
I:32位整型像素
F:33位浮點型像素
from PIL import Image im = Image.open("picture.jpg") print(im.mode)
將當前圖像轉換為其他模式,并且返回新的圖像
from PIL import Image im = Image.open("picture.jpg") new_im = im.convert('L') print(new_im.mode) new_im.show()
使用轉換矩陣將一個“RGB”圖像轉換為“L”或者“RGB”圖像
from PIL import Image im = Image.open("picture.jpg") print(im.mode) matrix = (0.412453,0.357580, 0.180423, 0, 0.212671,0.715160, 0.072169, 0, 0.019334,0.119193, 0.950227, 0 ) new_im = im.convert("L", matrix) print(new_im.mode) new_im.show()
獲取圖像的尺寸,按照像素數計算,它的返回值為寬度和高度的二元組
from PIL import Image im = Image.open("picture.jpg") print(im.size)
返回當前圖像各個通道組成的一個元組
分離一個 RGB 圖像將產生三個新的圖像
分別對應原始圖像的每個通道紅、綠、藍三張圖片
from PIL import Image im = Image.open("picture.jpg") r,g,b = im.split() print(r.mode) print(r.size) print(im.size)
from PIL import Image im = Image.open("picture.jpg") # 復制 im.copy() # 裁剪 im.crop((100, 100, 400, 400)) # 將一張圖粘貼到另一張圖像上 im.paste(im.transpose(Image.ROTATE_180),im) # 合并類使用一些單通道圖像,創建一個新的圖像 Image.merge("RGB", im.split())
Image類有resize()、rotate()和transpose()、transform()方法進行幾何變換
from PIL import Image im = Image.open("picture.jpg") # 修改尺寸 im.resize((128, 128)) # 角度旋轉 im.rotate(45) # 返回當前圖像的翻轉或者旋轉的拷貝 # 值為:FLIP_LEFT_RIGHT,FLIP_TOP_BOTTOM,ROTATE_90,ROTATE_180,ROTATE_270 im.transpose(Image.ROTATE_90) # 用給定的尺寸生成一張新的圖像,與原圖有相同的模式 im.transform((200, 200), Image.EXTENT, (0, 0, 300, 300))
使用ImageEnhance
對象就能快速地進行設置。 可以調整對比度、亮度、色平衡和銳利度
from PIL import Image from PIL import ImageEnhance im = Image.open("picture.jpg") enh = ImageEnhance.Contrast(im) enh.enhance(1.3).show("30% more contrast")
from PIL import Image from PIL import ImageFilter im = Image.open("picture.jpg") # 均值濾波 im1 = im.filter(ImageFilter.BLUR) # 找輪廓 im2 = im.filter(ImageFilter.CONTOUR) # 邊緣檢測 im3 = im.filter(ImageFilter.FIND_EDGES) im.show() im1.show() im2.show() im3.show()
使用給定的兩張圖像及透明度變量alpha,生成一張新的圖像
變量alpha值在0和1之間
若變量alpha為0.0,返回第一張圖像的拷貝。若變量alpha為1.0,將返回第二張圖像的拷貝。
from PIL import Image im1 = Image.open("picture1.jpg") im2 = Image.open("picture2.jpg") im = Image.blend(im1, im2, 0.30) im.show()
使用給定的兩張圖像及mask圖像作為透明度,生成一張新的圖像
圖像的模式可以為“1”,“L”或者“RGBA”
所有圖像必須有相同的尺寸
from PIL import Image im1 = Image.open("picture1.jpg") im2 = Image.open("picture2.jpg") im = Image.composite(im1, im2, 'L') im.show()
速度要求比質量高的場合
允許在不讀取文件內容的情況下盡可能(可能不會完全等于給定的參數)地將圖片轉成給定模式和大小,這在生成縮略圖的時候非常有效
from PIL import Image im = Image.open("picture.jpg") print(im.size,im.mode) new_im = im.draft("L", (200,200)) print(new_im.size,new_im.mode) new_im.show()
返回包括每個通道名稱的元組
例如,對于RGB圖像將返回(“R”,“G”,“B”)
from PIL import Image im = Image.open("picture.jpg") print(im.getbands())
計算圖像非零區域的包圍盒
這個包圍盒是一個4元組,定義了左、上、右和下像素坐標
如果圖像是空的,這個方法將返回空
from PIL import Image im = Image.open("picture.jpg") print(im.getbbox())
from PIL import Image im = Image.open("picture.jpg") print(im.getdata())
返回一個2元組
包括該圖像中的最小和最大值
from PIL import Image im = Image.open("picture.jpg") print(im.getextrema())
from PIL import Image im = Image.open("picture.jpg") print(im.getpixel((10,0)))
from PIL import Image im = Image.open("picture.jpg") im_histogram = im.histogram() print(im_histogram[0])
為圖像分配內存并從文件中加載它
返回一個用于讀取和修改像素的像素訪問對象
from PIL import Image im = Image.open("picture.jpg") pix = im.load() print(pix[0,2])
給定的動態圖中查找指定的幀
如果查找超越了序列的末尾,則產生一個EOFError異常
當文件被打開時,PIL庫自動指定到第0幀上
from PIL import Image im_gif = Image.open("loading.gif") print(im_gif.mode) # 默認打開時是第0幀 im_gif.show() im_gif.seek(1) im_gif.show() im_gif.seek(3) im_gif.show()
from PIL import Image im_gif = Image.open("loading.gif") print(im_gif.tell()) im_gif.seek(3) print(im_gif.tell())
讀到這里,這篇“python的Pillow圖像處理方法怎么用”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。