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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

pillow python 划线_Python-PIL(pillow)图片处理入门(一)

發(fā)布時間:2025/3/12 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pillow python 划线_Python-PIL(pillow)图片处理入门(一) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Pillow是Python里的圖像處理庫(PIL:Python Image Library),提供了了廣泛的文件格式支持,強(qiáng)大的圖像處理能力,主要包括圖像儲存、圖像顯示、格式轉(zhuǎn)換以及基本的圖像處理操作等。

1)使用 Image 類

PIL最重要的類是 Image class, 你可以通過多種方法創(chuàng)建這個類的實(shí)例;你可以從文件加載圖像,或者處理其他圖像, 或者從 scratch 創(chuàng)建。

要從文件加載圖像,可以使用open( )函數(shù),在Image模塊中:

>>> from PIL import Image

>>> im = Image.open("./1.jpg")

加載成功后,將返回一個Image對象,可以通過使用示例屬性查看文件內(nèi)容:

>>> print(im.format, im.size, im.mode)

>>>('JPEG', (600, 351), 'RGB')

format 這個屬性標(biāo)識了圖像來源。如果圖像不是從文件讀取它的值就是None。

size屬性是一個二元tuple,包含width和height(寬度和高度,單位都是px)。

mode 屬性定義了圖像bands的數(shù)量和名稱,以及像素類型和深度。常見的modes 有 “L” (luminance) 表示灰度圖像, “RGB” 表示真彩色圖像, and “CMYK” 表示出版圖像。

如果文件打開錯誤,返回 IOError 錯誤。

只要你有了 Image 類的實(shí)例,你就可以通過類的方法處理圖像。比如,下列方法可以顯示圖像:

im.show()

2)讀寫圖像

PIL 模塊支持大量圖片格式。使用在 Image 模塊的 open() 函數(shù)從磁盤讀取文件。你不需要知道文件格式就能打開它,這個庫能夠根據(jù)文件內(nèi)容自動確定文件格式。要保存文件,使用 Image 類的 save() 方法。保存文件的時候文件名變得重要了。除非你指定格式,否則這個庫將會以文件名的擴(kuò)展名作為格式保存。

加載圖片文件,并轉(zhuǎn)化為png格式:

"Python Image Library Test"

from PIL import Image

import os

import sys

for infile in sys.argv[1:]:

f,e = os.path.splitext(infile)

outfile = f +".png"

if infile != outfile:

try:

Image.open(infile).save(outfile)

except IOError:

print("Cannot convert", infile)

save() 方法的第二個參數(shù)可以指定文件格式。

3)創(chuàng)建縮略圖

縮略圖是網(wǎng)絡(luò)開發(fā)或圖像軟件預(yù)覽常用的一種基本技術(shù),使用Python的Pillow圖像庫可以很方便的建立縮略圖,如下:

# create thumbnail

size = (128,128)

for infile in glob.glob("./*.jpg"):

f, ext = os.path.splitext(infile)

img = Image.open(infile)

img.thumbnail(size,Image.ANTIALIAS)

img.save(f+".thumbnail","JPEG")

上段代碼對photoshop下的jpg圖像文件全部創(chuàng)建縮略圖,并保存,glob模塊是一種智能化的文件名匹配技術(shù),在批圖像處理中經(jīng)常會用到。 注意:Pillow庫不會直接解碼或者加載圖像柵格數(shù)據(jù)。當(dāng)你打開一個文件,只會讀取文件頭信息用來確定格式,顏色模式,大小等等,文件的剩余部分不會主動處理。這意味著打開一個圖像文件的操作十分快速,跟圖片大小和壓縮方式無關(guān)。

4)圖像的剪切、粘貼與合并操作

Image 類包含的方法允許你操作圖像部分選區(qū),PIL.Image.Image.crop 方法獲取圖像的一個子矩形選區(qū),如:

# crop, paste and merge

im = Image.open("./lena.jpg")

box = (100,100,300,300)

region = im.crop(box)

矩形選區(qū)有一個4元元組定義,分別表示左、上、右、下的坐標(biāo)。這個庫以左上角為坐標(biāo)原點(diǎn),單位是px,所以上訴代碼復(fù)制了一個 200×200 pixels 的矩形選區(qū)。這個選區(qū)現(xiàn)在可以被處理并且粘貼到原圖。

region = region.transpose(Image.ROTATE_180)

im.paste(region, box)

當(dāng)你粘貼矩形選區(qū)的時候必須保證尺寸一致。此外,矩形選區(qū)不能在圖像外。然而你不必保證矩形選區(qū)和原圖的顏色模式一致,因為矩形選區(qū)會被自動轉(zhuǎn)換顏色。

5)分離和合并顏色通道

對于多通道圖像,有時候在處理時希望能夠分別對每個通道處理,處理完成后重新合成多通道,在Pillow中,很簡單,如下:

r,g,b,a = im.split()

im = Image.merge("RGB", (r,g,b,a))

對于split( )函數(shù),如果是單通道的,則返回其本身,否則,返回各個通道。

6)幾何變換

對圖像進(jìn)行幾何變換是一種基本處理,在Pillow中包括resize( )和rotate( ),如用法如下:

out = im.resize((128,128))

out = im.rotate(45) # degree conter-clockwise

resize( )函數(shù)的參數(shù)是一個新圖像大小的元祖, rotate( )則需要輸入順時針的旋轉(zhuǎn)角度。rotate是基于Image.transform()函數(shù)的封裝,想要深入了解PIL的可以參見下一篇文章。

7)顏色空間變換

在處理圖像時,根據(jù)需要進(jìn)行顏色空間的轉(zhuǎn)換,如將彩色轉(zhuǎn)換為灰度:

cmyk = im.convert("CMYK")

gray = im.convert("L")

8)圖像濾波

圖像濾波在ImageFilter 模塊中,在該模塊中,預(yù)先定義了很多增強(qiáng)濾波器,可以通過filter( )函數(shù)使用,預(yù)定義濾波器包括: BLUR、CONTOUR、DETAIL、EDGE_ENHANCE、EDGE_ENHANCE_MORE、EMBOSS、FIND_EDGES、SMOOTH、SMOOTH_MORE、SHARPEN。其中BLUR就是均值濾波,CONTOUR找輪廓,FIND_EDGES邊緣檢測,使用該模塊時,需先導(dǎo)入,使用方法如下:

from PIL import ImageFilter

imgF = Image.open("E:/photoshop/lena.jpg")

outF = imgF.filter(ImageFilter.DETAIL)

conF = imgF.filter(ImageFilter.CONTOUR)

edgeF = imgF.filter(ImageFilter.FIND_EDGES)

imgF.show()

outF.show()

conF.show()

edgeF.show()

除此以外,ImageFilter模塊還包括一些擴(kuò)展性強(qiáng)的濾波器,更多詳細(xì)內(nèi)容可以參考:PIL/ImageFilter

9)圖像增強(qiáng)

圖像增強(qiáng)也是圖像預(yù)處理中的一個基本技術(shù),Pillow中的圖像增強(qiáng)函數(shù)主要在ImageEnhance模塊下,通過該模塊可以調(diào)節(jié)圖像的顏色、對比度和飽和度和銳化等:

from PIL import ImageEnhance

imgE = Image.open("./lena.jpg")

imgEH = ImageEnhance.Contrast(imgE)

imgEH.enhance(1.3).show("30% more contrast")

除了以上介紹的內(nèi)容外,Pillow還有很多強(qiáng)大的功能:

PIL.Image.alpha_composite(im1, im2)

PIL.Image.blend(im1, im2, alpha)

PIL.Image.composite(image1, image2, mask)

PIL.Image.eval(image, *args)

PIL.Image.fromarray(obj, mode=None)

PIL.Image.frombuffer(mode, size, data, decoder_name=’raw’, *args)

總結(jié)

以上是生活随笔為你收集整理的pillow python 划线_Python-PIL(pillow)图片处理入门(一)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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