中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python圖像處理之PIL庫怎么使用

發布時間:2022-06-23 13:37:14 來源:億速云 閱讀:198 作者:iii 欄目:編程語言

本篇內容主要講解“Python圖像處理之PIL庫怎么使用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Python圖像處理之PIL庫怎么使用”吧!

Python圖像處理之PIL庫怎么使用

PIL庫的使用

要點:PIL庫是一個具有強大圖像處理能力的第三方庫,不僅包含了豐富的像素、色彩操作功能,還可以用于圖像歸檔和批量處理。

1.PIL庫概述

PIL(Python Image Library)庫是Python語言的第三方庫,需要通過pip工具安裝。安裝PIL庫的方法如下,需要注意,安裝庫的名字是pillow。

:\>pip install pillow #或者 pip3 install pillow

PIL庫支持圖像存儲、顯示和處理,它能夠處理幾乎所有圖片格式,可以完成對圖像的縮放、剪裁、疊加以及向圖像添加線條、圖像和文字等操作。
PIL庫主要可以實現圖像歸檔和圖像處理兩方面動能需求
(1)圖像歸檔:對圖像進行批處理、生成圖像預覽、圖像格式轉換等。
(2)圖像處理:圖像基本處理、像素處理、顏色處理等。
根據功能不同,PIL庫共包括21個與圖片相關的類,這些類可以被看作是子庫
或PIL庫中的模塊,子庫列表如下。
Image、 ImageChops、 ImageColor、 ImageCrackCode、 ImageDraw.ImageEnhance、 ImageFile、 ImageFilelO、 ImageFilter、 ImageFont、ImageGL、 ImageGrab、 Imagemath、 ImageOps、 ImagePalette、 ImagePath.ImageQt、 ImageSequence、 ImageStat ImageTk, ImageWin
重點介紹PIL庫最常用的子庫:Image、ImageFilter、ImageEnhance。

2.PIL庫Image類解析

Image是PIL最重要的類,它代表一張圖片,引入這個類的方法如下:

>>>from PIL import Image

在PIL中,任何一個圖像文件都可以用Image對象表示。Image類的圖像讀取和創建方法如下(共5個):

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

通過Image打開圖像文件時,圖像的柵格數據不會被直接解碼或者加載,程序只是讀取了圖像文件頭部的元數據信息,這部分信息標識了圖像的格式、顏色、大小等。因此,打開一個文件會十分迅速,與圖像的存儲和壓縮方式無關。
要加載一個圖像文件,最簡單的形式如下,之后所有操作對im起作用。

>>>from PIL import Image>>>im = Image.open ("a.jpg")

在使用IDLE交互方式處理圖片文件時,建議采用文件的全路徑;如果使用Python文件形式,建議采用相對路徑,將文件和程序放到一個目錄中。
Image類有4個處理圖片的常用屬性,如表所示(共4個)

屬性描述
Image.format標識圖像格式或來源,如果圖像不是從文件讀取,值為None
Image.mode圖像的色彩模式,"L"為灰度圖像、"RGB”為真彩色圖像、"CMYK”為出版圖像
Image.size圖像蜜度和高度,單位是像素(px),返回值是二元元組(tuple)
Image.palette調色板屬性,返回一個ImagePalette類型

查看已經讀取的圖像文件的屬性如下:

>>>print (im. format, im.size, im.mode)JPEG (900, 598) RGB

Image還能讀取序列類圖像文件,包括GIF、FLI、FLC、TIFF等格式文件。open()方法打開一個圖像時自動加載序列中的第一幀,使用seek()和tell()方法可以在不同幀之間移動。
Image類的序列圖像操作方法(共2個):

方法描述
Image.seek(frame)跳轉并返回圖像中的指定幀
Image.tell()返回當前幀的序號

【實例1】GIF文件圖像提取
對一個GIF格式動態文件,提取其中各幀圖像,并保存為文件。

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

實例1展示了一種采用try-except編寫程序的方法,通過seek()方法和save()方法配合提取GIF圖像格式的每一幀,并保存為文件。
Image類的圖像轉換和保存方法 (共3個) 如表所示。

方法描述
Image.save(filename, format)將圖像保存為filename文件名,format是圖片格式
Image.convert(mode)使用不同的參數,轉換圖像為新的模式
Image.thumbnail(size)創建圖像的縮略圖,size是縮略圖尺寸的二元元組

其中,save()方法有兩個參數:文件名filename和圖像格式format。如果調用時不指定保存格式,如微實例1,PIL將自動根據文件名filename后綴存儲圖像;如果指定格式,則按照格式存儲。搭配采用open()和save()方法可以實現圖像的格式轉換,例如,將 jpg格式轉換為png格式」代碼如下。需要注意,Image 類的 save()方法主要用于保存文件到硬盤,PIL庫還提供了功能更強大的格式轉換方法。

im = Image.open("a.jpg")im.save("a.png")

Image類可以縮放和旋轉圖像,其中,rotate(方法以逆時旋轉的角度值作為參數來旋轉圖像。
Image類的圖像旋轉和縮放方法(共2個):

方法描述
Image.resize(size)按size大小調整圖像,生成副本
Image.rotate(angle)按angle角度旋轉圖像,生成副本

Image類能夠對每個像素點或者一幅RGB圖像的每個通道單獨進行操作。split()方法能夠將RGB 圖像各顏色通道提取出來;
merge()方法能夠將各獨立通道再合成一幅新的圖像。
lmage類的圖像像素和通道處理方法(共4個):

方法描述
Image.point(func)根據函數func的功能對每個元素進行運算,返回圖像副本
Image.split()提取RGB圖像的每個顏色通道,返回圖像副本
Image.merge(mode,bands)合并通道,其中mode表示色彩,bands表示新的色彩通道
Image.blend(im1,im2,alpha)將兩幅圖片iml和im2按照如下公式插值后生成新的圖像:im1 (1.0-alpha) + im2 alpha

【實例2】圖像的顏色交換
交換圖像中的顏色。可以通過分離RGB圖片的3個顏色通道實現顏色交換。

from PIL import Imageim = Image.open('a.jpg')r, g, b = im.split()om = Image.merge("RGB" , (b, g, r))om.save('aBGR.jpg')

操作圖像的每個像素點需要通過函數實現,可以采用(lambda)函數和point()方法,例子如下,顯示效果如圖7所示。

>>>im=Image.apen('a.jpg')#打開文件>>>>r,g,b=im.splitO#獲得RGB通道數據>>>>newg=g.point(lambda i:i*0.9)#將G通道顏色值變為原來的0.9>>>>newb=b.point(lambda i:i<100)#選擇B通道值(低于100的像素>>>>om=Image.merge(im.mode,(r,newg,newb)#將3個通道合成為新圖>>>>om.save('new_a.jpg')#輸出圖片
3.圖像的過濾和增強

PIL庫的ImageFilter類和ImageEnhance類提供了過濾圖像和增強圖像的方法。
ImageFilter類共提供10種預定義圖像過濾方法(共10個):

方法表示描述
ImageFilter.BLUR圖像的模糊效果
ImageFilter.CONTOUR圖像的輪廓效果
ImageFilter.DETAIL圖像的細節效果
ImageFilter.EDGE_ENHANCE圖像的邊界加強效果
ImageFilter.EDGE_ENHANCE_MORE圖像的閾值邊界加強效果
ImageFilter.EMBOSS圖像的浮雕效果
ImageFilter.SMOOTHL圖像的平滑效果
ImageFilter.FIND_EDGES圖像的邊界效果
ImageFilter.SMOOTH_MORE圖像的閾值平滑效果
ImageFilter.SHARPEN圖像的銳化效果

利用Image類的filter()方法可以使用ImageFilter類,使用方式如下:

Image.filter(ImageFilter.fuction)

【實例3】圖像的輪廓獲取。
獲取圖像的輪廓,代碼如下,程序執行效果如圖所示,圖片變得更加抽象、更具想象空間!

from PIL import Imagefrom PIL import ImageFilterim = Image.open('a.jpg')om = im.filter(ImageFilter.CONTOUR)om.save('aContour.jpg')



ImageEnhance類提供了更高級的圖像增強功能,如調整色彩度、亮度、對比度、銳化等。
ImageEnhance類的圖像增強和濾鏡方法(共5個):

方法描述
ImageEnhance.enhance(factor)對選擇屬性的數值增強factor倍
ImageEnhance.Color(im)調整圖像的顏色平衡
ImageEnhance.Contrast(im)調整圖像的對比度
ImageEnhance.Brightness(im)調整圖像的亮度
ImageEnhance.Sharpness(im)調整圖像的銳度

【實例4】圖像的對比度增強。
增強圖像的對比度為初始的20倍。代碼如下,程序執行效果如圖7所示。

from PIL import Imagefrom PIL import ImageEnhanceim = Image.open('a.jpg')om = ImageEnhance.Contrast(im)om.enhance(20).save(aEnContrast.jpg')

到此,相信大家對“Python圖像處理之PIL庫怎么使用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

龙里县| 绥阳县| 西安市| 杭锦旗| 沂南县| 黄浦区| 武夷山市| 石渠县| 三都| 广州市| 罗山县| 廊坊市| 辽阳县| 仪陇县| 无为县| 越西县| 当阳市| 阿鲁科尔沁旗| 怀安县| 西畴县| 昌吉市| 禹州市| 塔城市| 阳谷县| 东源县| 肇庆市| 吉首市| 盐源县| 寻乌县| 石屏县| 邹城市| 进贤县| 灯塔市| 郧西县| 兴国县| 宁晋县| 山东省| 迁西县| 大荔县| 宜州市| 昭通市|