python351
❶ python的pillow庫怎麼處理灰度圖像
Pillow是Python里的圖像處理庫(PIL:Python Image Library),提供了了廣泛的文件格式支持,強大的圖像處理能力,主要包括圖像儲存、圖像顯示、格式轉換以及基本的圖像處理操作等。
1)使用 Image 類
PIL最重要的類是 Image class, 你可以通過多種方法創建這個類的實例;你可以從文件載入圖像,或者處理其他圖像, 或者從 scratch 創建。
要從文件載入圖像,可以使用open( )函數,在Image模塊中:
>>> from PIL import Image
>>> im = Image.open("E:/photoshop/1.jpg")
載入成功後,將返回一個Image對象,可以通過使用示例屬性查看文件內容:
>>> print(im.format, im.size, im.mode)
('JPEG', (600, 351), 'RGB')
>>>
format 這個屬性標識了圖像來源。如果圖像不是從文件讀取它的值就是None。size屬性是一個二元tuple,包含width和height(寬度和高度,單位都是px)。 mode 屬性定義了圖像bands的數量和名稱,以及像素類型和深度。常見的modes 有 「L」 (luminance) 表示灰度圖像, 「RGB」 表示真彩色圖像, and 「CMYK」 表示出版圖像。
如果文件打開錯誤,返回 IOError 錯誤。
只要你有了 Image 類的實例,你就可以通過類的方法處理圖像。比如,下列方法可以顯示圖像:
im.show()
2)讀寫圖像
PIL 模塊支持大量圖片格式。使用在 Image 模塊的 open() 函數從磁碟讀取文件。你不需要知道文件格式就能打開它,這個庫能夠根據文件內容自動確定文件格式。要保存文件,使用 Image 類的 save() 方法。保存文件的時候文件名變得重要了。除非你指定格式,否則這個庫將會以文件名的擴展名作為格式保存。
載入文件,並轉化為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() 方法的第二個參數可以指定文件格式。
3)創建縮略圖
縮略圖是網路開發或圖像軟體預覽常用的一種基本技術,使用Python的Pillow圖像庫可以很方便的建立縮略圖,如下:
# create thumbnail
size = (128,128)
for infile in glob.glob("E:/photoshop/*.jpg"):
f, ext = os.path.splitext(infile)
img = Image.open(infile)
img.thumbnail(size,Image.ANTIALIAS)
img.save(f+".thumbnail","JPEG")
上段代碼對photoshop下的jpg圖像文件全部創建縮略圖,並保存,glob模塊是一種智能化的文件名匹配技術,在批圖像處理中經常會用到。
注意:Pillow庫不會直接解碼或者載入圖像柵格數據。當你打開一個文件,只會讀取文件頭信息用來確定格式,顏色模式,大小等等,文件的剩餘部分不會主動處理。這意味著打開一個圖像文件的操作十分快速,跟圖片大小和壓縮方式無關。
4)圖像的剪切、粘貼與合並操作
Image 類包含的方法允許你操作圖像部分選區,PIL.Image.Image.crop 方法獲取圖像的一個子矩形選區,如:
# crop, paste and merge
im = Image.open("E:/photoshop/lena.jpg")
box = (100,100,300,300)
region = im.crop(box)
矩形選區有一個4元元組定義,分別表示左、上、右、下的坐標。這個庫以左上角為坐標原點,單位是px,所以上訴代碼復制了一個 200×200 pixels 的矩形選區。這個選區現在可以被處理並且粘貼到原圖。
region = region.transpose(Image.ROTATE_180)
im.paste(region, box)
當你粘貼矩形選區的時候必須保證尺寸一致。此外,矩形選區不能在圖像外。然而你不必保證矩形選區和原圖的顏色模式一致,因為矩形選區會被自動轉換顏色。
5)分離和合並顏色通道
對於多通道圖像,有時候在處理時希望能夠分別對每個通道處理,處理完成後重新合成多通道,在Pillow中,很簡單,如下:
r,g,b = im.split()
im = Image.merge("RGB", (r,g,b))
對於split( )函數,如果是單通道的,則返回其本身,否則,返回各個通道。
6)幾何變換
對圖像進行幾何變換是一種基本處理,在Pillow中包括resize( )和rotate( ),如用法如下:
out = im.resize((128,128))
out = im.rotate(45) # degree conter-clockwise
其中,resize( )函數的參數是一個新圖像大小的元祖,而rotate( )則需要輸入順時針的旋轉角度。在Pillow中,對於一些常見的旋轉作了專門的定義:
out = im.transpose(Image.FLIP_LEFT_RIGHT)
out = im.transpose(Image.FLIP_TOP_BOTTOM)
out = im.transpose(Image.ROTATE_90)
out = im.transpose(Image.ROTATE_180)
out = im.transpose(Image.ROTATE_270)
7)顏色空間變換
在處理圖像時,根據需要進行顏色空間的轉換,如將彩色轉換為灰度:
cmyk = im.convert("CMYK")
gray = im.convert("L")
8)圖像濾波
圖像濾波在ImageFilter 模塊中,在該模塊中,預先定義了很多增強濾波器,可以通過filter( )函數使用,預定義濾波器包括:
BLUR、CONTOUR、DETAIL、EDGE_ENHANCE、EDGE_ENHANCE_MORE、EMBOSS、FIND_EDGES、SMOOTH、SMOOTH_MORE、SHARPEN。其中BLUR就是均值濾波,CONTOUR找輪廓,FIND_EDGES邊緣檢測,使用該模塊時,需先導入,使用方法如下:
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模塊還包括一些擴展性強的濾波器:
class PIL.ImageFilter.GaussianBlur(radius=2)
❷ centos 7 為什麼 python3 知乎
1–下載python3.5的包
在python官網https://www.python.org/downloads/release/python-351/
下載tgz包就可以了。其實下面的2個包其一都可以使用
Python-3.5.1.tgz (這個不是編譯過的東西,不能解壓之後直接使用)
Python-3.5.1.tar.xz (這個是pthon的源碼)
2–解壓文件
tar -xf Python-3.5.1.tgz
3–解壓之後有一個目錄Python-3.5.1,進入目錄
cd Python-3.5.1
4–開始安裝,使用編譯的方法進行安裝
在python的目錄中有一個README文件,他介紹了如何安裝python。 但是我們要指定這個安裝目錄
mkdir /usr/python3.5./configure --prefix=/usr/python3.5makemake install
說明./configure命令執行完畢之後創建一個文件creating Makefile,供下面的make命令使用 執行make install之後就會把程序安裝到我們指定的目錄中去
5–讓系統默認使用Python 3.5.1
在/usr/bin中有python、python2、python2.7三個文件依次指向後者,我們將python備份
cd /usr/bin mv python python.bak ln -s /usr/python3.5/bin/python3 /usr/bin/python
注意我們編譯安裝之後在/usr/python3.5/bin下會自動生成一個python3的連接,他指向bin目錄中的python3.5
6–因為yum使用python2,因此替換為python3後可能無法正常工作,繼續使用這個python2.7.5
因此修改yum配置文件(sudo vi /usr/bin/yum)。 把文件頭部的#!/usr/bin/python改成#!/usr/bin/python2.7保存退出即可
❸ Python LXML模塊死活安裝不了怎麼辦
最好先說明一下你的python的版本,這樣更方便回答一些 我就簡單說一下我的解決辦法吧 平台是win10 64位 python版本是351 64位 打開python35程序 輸入 import pip; print(pippep425tagsget_supported()) 顯示如下圖: 詳細什麼意思就不太清Python LXML模塊死活安裝不了怎麼辦
❹ python的pillow庫怎麼使用
Pillow是Python里的圖像處理庫(PIL:Python Image Library),提供了了廣泛的文件格式支持,強大的圖像處理能力,主要包括圖像儲存、圖像顯示、格式轉換以及基本的圖像處理操作等。
1)使用 Image 類
PIL最重要的類是 Image class, 你可以通過多種方法創建這個類的實例;你可以從文件載入圖像,或者處理其他圖像, 或者從 scratch 創建。
要從文件載入圖像,可以使用open( )函數,在Image模塊中:
[python]view plain
>>>fromPILimportImage
>>>im=Image.open("E:/photoshop/1.jpg")
>>>print(im.format,im.size,im.mode)
('JPEG',(600,351),'RGB')
>>>
im.show()
"PythonImageLibraryTest"
fromPILimportImage
importos
importsys
forinfileinsys.argv[1:]:
f,e=os.path.splitext(infile)
outfile=f+".png"
ifinfile!=outfile:
try:
Image.open(infile).save(outfile)
exceptIOError:
print("Cannotconvert",infile)
#createthumbnail
size=(128,128)
forinfileinglob.glob("E:/photoshop/*.jpg"):
f,ext=os.path.splitext(infile)
img=Image.open(infile)
img.thumbnail(size,Image.ANTIALIAS)
img.save(f+".thumbnail","JPEG")
#crop,pasteandmerge
im=Image.open("E:/photoshop/lena.jpg")
box=(100,100,300,300)
region=im.crop(box)
region=region.transpose(Image.ROTATE_180)
im.paste(region,box)
r,g,b=im.split()
im=Image.merge("RGB",(r,g,b))
out=im.resize((128,128))
out=im.rotate(45)#degreeconter-clockwise
out=im.transpose(Image.FLIP_LEFT_RIGHT)
out=im.transpose(Image.FLIP_TOP_BOTTOM)
out=im.transpose(Image.ROTATE_90)
out=im.transpose(Image.ROTATE_180)
out=im.transpose(Image.ROTATE_270)
cmyk=im.convert("CMYK")
gray=im.convert("L")
fromPILimportImageFilter
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()
classPIL.ImageFilter.GaussianBlur(radius=2)
Gaussian blur filter.
參數:
radius– Blur radius.classPIL.ImageFilter.UnsharpMask(radius=2,percent=150,threshold=3)
Unsharp mask filter.
See Wikipedia』s entry ondigital unsharp maskingfor an explanation of the parameters.
classPIL.ImageFilter.Kernel(size,kernel,scale=None,offset=0)
Create a convolution kernel. The current version only supports 3x3 and 5x5 integer and floating point kernels.
In the current version, kernels can only be applied to 「L」 and 「RGB」 images.
參數:
size– Kernel size, given as (width, height). In the current version, this must be (3,3) or (5,5).
kernel– A sequence containing kernel weights.
scale– Scale factor. If given, the result for each pixel is divided by this value. the default is the sum of the kernel weights.
offset– Offset. If given, this value is added to the result, after it has been divided by the scale factor.
classPIL.ImageFilter.RankFilter(size,rank)
Create a rank filter. The rank filter sorts all pixels in a window of the given size, and returns therank『th value.
參數:
size– The kernel size, in pixels.
rank– What pixel value to pick. Use 0 for a min filter,size*size/2for a median filter,size*size-1for a max filter, etc.
classPIL.ImageFilter.MedianFilter(size=3)
Create a median filter. Picks the median pixel value in a window with the given size.
參數:
size– The kernel size, in pixels.classPIL.ImageFilter.MinFilter(size=3)
Create a min filter. Picks the lowest pixel value in a window with the given size.
參數:
size– The kernel size, in pixels.classPIL.ImageFilter.MaxFilter(size=3)
Create a max filter. Picks the largest pixel value in a window with the given size.
參數:
size– The kernel size, in pixels.classPIL.ImageFilter.ModeFilter(size=3)
Create a mode filter. Picks the most frequent pixel value in a box with the given size. Pixel values that occur only once or twice are ignored; if no pixel value occurs more than twice, the original pixel value is preserved.
參數:
size– The kernel size, in pixels.更多詳細內容可以參考:PIL/ImageFilter
fromPILimportImageEnhance
imgE=Image.open("E:/photoshop/lena.jpg")
imgEH=ImageEnhance.Contrast(imgE)
imgEH.enhance(1.3).show("30%morecontrast")
classPIL.ImageEnhance.Color(image)
Adjust image color balance.
This class can be used to adjust the colour balance of an image, in a manner similar to the controls on a colour TV set. An enhancement factor of 0.0 gives a black and white image. A factor of 1.0 gives the original image.
classPIL.ImageEnhance.Contrast(image)
Adjust image contrast.
This class can be used to control the contrast of an image, similar to the contrast control on a TV set. An enhancement factor of 0.0 gives a solid grey image. A factor of 1.0 gives the original image.
classPIL.ImageEnhance.Brightness(image)
Adjust image brightness.
This class can be used to control the brighntess of an image. An enhancement factor of 0.0 gives a black image. A factor of 1.0 gives the original image.
classPIL.ImageEnhance.Sharpness(image)
Adjust image sharpness.
This class can be used to adjust the sharpness of an image. An enhancement factor of 0.0 gives a blurred image, a factor of 1.0 gives the original image, and a factor of 2.0 gives a sharpened image.
載入成功後,將返回一個Image對象,可以通過使用示例屬性查看文件內容:
[python]view plain
format這個屬性標識了圖像來源。如果圖像不是從文件讀取它的值就是None。size屬性是一個二元tuple,包含width和height(寬度和高度,單位都是px)。mode屬性定義了圖像bands的數量和名稱,以及像素類型和深度。常見的modes 有 「L」 (luminance) 表示灰度圖像, 「RGB」 表示真彩色圖像, and 「CMYK」 表示出版圖像。
如果文件打開錯誤,返回IOError錯誤。
只要你有了 Image 類的實例,你就可以通過類的方法處理圖像。比如,下列方法可以顯示圖像:
[python]view plain
2)讀寫圖像
PIL 模塊支持大量圖片格式。使用在 Image 模塊的 open() 函數從磁碟讀取文件。你不需要知道文件格式就能打開它,這個庫能夠根據文件內容自動確定文件格式。要保存文件,使用 Image 類的 save() 方法。保存文件的時候文件名變得重要了。除非你指定格式,否則這個庫將會以文件名的擴展名作為格式保存。
載入文件,並轉化為png格式:
[python]view plain
save() 方法的第二個參數可以指定文件格式。
3)創建縮略圖
縮略圖是網路開發或圖像軟體預覽常用的一種基本技術,使用Python的Pillow圖像庫可以很方便的建立縮略圖,如下:
[python]view plain
上段代碼對photoshop下的jpg圖像文件全部創建縮略圖,並保存,glob模塊是一種智能化的文件名匹配技術,在批圖像處理中經常會用到。
注意:Pillow庫不會直接解碼或者載入圖像柵格數據。當你打開一個文件,只會讀取文件頭信息用來確定格式,顏色模式,大小等等,文件的剩餘部分不會主動處理。這意味著打開一個圖像文件的操作十分快速,跟圖片大小和壓縮方式無關。
4)圖像的剪切、粘貼與合並操作
Image 類包含的方法允許你操作圖像部分選區,PIL.Image.Image.crop 方法獲取圖像的一個子矩形選區,如:
[python]view plain
矩形選區有一個4元元組定義,分別表示左、上、右、下的坐標。這個庫以左上角為坐標原點,單位是px,所以上訴代碼復制了一個 200x200 pixels 的矩形選區。這個選區現在可以被處理並且粘貼到原圖。
[python]view plain
當你粘貼矩形選區的時候必須保證尺寸一致。此外,矩形選區不能在圖像外。然而你不必保證矩形選區和原圖的顏色模式一致,因為矩形選區會被自動轉換顏色。
5)分離和合並顏色通道
對於多通道圖像,有時候在處理時希望能夠分別對每個通道處理,處理完成後重新合成多通道,在Pillow中,很簡單,如下:
[python]view plain
對於split( )函數,如果是單通道的,則返回其本身,否則,返回各個通道。
6)幾何變換
對圖像進行幾何變換是一種基本處理,在Pillow中包括resize( )和rotate( ),如用法如下:
[python]view plain
其中,resize( )函數的參數是一個新圖像大小的元祖,而rotate( )則需要輸入順時針的旋轉角度。在Pillow中,對於一些常見的旋轉作了專門的定義:
[python]view plain
7)顏色空間變換
在處理圖像時,根據需要進行顏色空間的轉換,如將彩色轉換為灰度:
[python]view plain
8)圖像濾波
圖像濾波在ImageFilter 模塊中,在該模塊中,預先定義了很多增強濾波器,可以通過filter( )函數使用,預定義濾波器包括:
BLUR、CONTOUR、DETAIL、EDGE_ENHANCE、EDGE_ENHANCE_MORE、EMBOSS、FIND_EDGES、SMOOTH、SMOOTH_MORE、SHARPEN。其中BLUR就是均值濾波,CONTOUR找輪廓,FIND_EDGES邊緣檢測,使用該模塊時,需先導入,使用方法如下:
[python]view plain
除此以外,ImageFilter模塊還包括一些擴展性強的濾波器:
9)圖像增強
圖像增強也是圖像預處理中的一個基本技術,Pillow中的圖像增強函數主要在ImageEnhance模塊下,通過該模塊可以調節圖像的顏色、對比度和飽和度和銳化等:
[python]view plain
圖像增強:
圖像增強的詳細內容可以參考:PIL/ImageEnhance
除了以上介紹的內容外,Pillow還有很多強大的功能:
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)
❺ python中 運行 print((5025-525)/100+18*17)的結果是351.0,為什麼是有一個小數點加個0呢,不是351呢
這是python的官方文檔里的一句說明:
上面圖片說白了就是,如果一項算式中有N個操作數,但是只要有1個操作數是符點型(符點型就簡單的理解為帶小數點的數即可),則最終的結果的類型就是符點型。
因為除法得到的結果是符點型的 //可以在python解釋器中輸入type(2/1),會告訴你結果是float類型
所以(5025-525)/100這步的運算得到的是一個符點型值45.0,既然運算中有一個是符點型值了,則後面無論加減乘除,你最終得到的結果都是符點型,而符點型的標志就是小數點,所以即使是整數也顯示的是後面帶.0的
*.看看能看明白不,哪句不清楚,可以追問
❻ 如何用Python編寫一個素數環
代碼:
n = int(input("請輸入最大數n:"))
lists = [[1]]#多個素數環
surplusnum = list(range(1,n+1)) #剩餘的數
def sumisprime(x, y):
#x與y之和是否是素數
isprime=True#是否是素數
s = x + y#和
for i in range(2, int(s**0.5)+1):
#素數判定法:從2開始直到此數的開方內的整數都不能被該數整除,則此數為素數
if s%i == 0:#能被整除
isprime = False#不是素數
break#跳出循環
return isprime#返回後否是素數(是:True,否:False)
changelast=lambda listx,addvalue:listx[0:-1]+[addvalue]#改變列表末尾的函數
while len(lists[0] if len(lists) else [0]*n) < n:#當素數環長度小於最大數時
n2 = len(lists[0]) #n2為判定,理論當前列表長度最大值
for listn in lists:#遍歷各個可能的素數環
surplusnum=list(range(1,n+1))#默認值
for j in listn:#遍歷當前列表的數
surplusnum.remove(j)#剩餘的數中刪除此數
for i in surplusnum:#遍歷剩餘的數
if sumisprime(listn[n2-1], i):#最後一個數與它的和是素數
if len(listn) == n2:#如果現在這個列表是沒有被添加過的
listn.append(i)#增加在這個列表
else:#如果該列表已經被添加過
lista = changelast(listn, i)#要加入的列表
if lista not in lists:#如果不在這個列表裡
lists.append(lista)#添加到另一個列表
for listn in lists.():#防止lists被刪造成影響
if len(listn) != n2+1:#如果長度沒有達到預期(+1)
lists.remove(listn)#刪除該列表(取消此可能性)
if len(lists[0]) == n:#已經符合條件
for listn in lists:#遍歷列表,檢查首尾
if sumisprime(listn[-1], listn[0]):#如果首尾相加等於素數
print(listn)#環成立,列印出來
break#結束循環
說明:經試驗,都沒什麼問題,n=12也能很快運算完(但我勸你不要打出來),如果你只需要1個素數環,可以把break的縮進調到print(listn)並列。
❼ Python不能安裝ez_setup.py,提示錯誤,怎麼辦
需要進入你的python安裝路徑,更改裡面的代碼,再次用cmd運行安裝命令即可。
❽ python圖像處理初學者求助
Pillow是Python里的圖像處理庫(PIL:Python Image Library),提供了了廣泛的文件格式支持,強大的圖像處理能力,主要包括圖像儲存、圖像顯示、格式轉換以及基本的圖像處理操作等。
1)使用 Image 類
PIL最重要的類是 Image class, 你可以通過多種方法創建這個類的實例;你可以從文件載入圖像,或者處理其他圖像, 或者從 scratch 創建。
要從文件載入圖像,可以使用open( )函數,在Image模塊中:
1
2
>>> from PIL import Image
>>> im = Image.open("E:/photoshop/1.jpg")
載入成功後,將返回一個Image對象,可以通過使用示例屬性查看文件內容:
1
2
3
>>> print(im.format, im.size, im.mode)
('JPEG', (600, 351), 'RGB')
>>>
format 這個屬性標識了圖像來源。如果圖像不是從文件讀取它的值就是None。size屬性是一個二元tuple,包含width和height(寬度和高度,單位都是px)。 mode 屬性定義了圖像bands的數量和名稱,以及像素類型和深度。常見的modes 有 「L」 (luminance) 表示灰度圖像, 「RGB」 表示真彩色圖像, and 「CMYK」 表示出版圖像。
如果文件打開錯誤,返回 IOError 錯誤。
只要你有了 Image 類的實例,你就可以通過類的方法處理圖像。比如,下列方法可以顯示圖像:
1
im.show()
2)讀寫圖像
PIL 模塊支持大量圖片格式。使用在 Image 模塊的 open() 函數從磁碟讀取文件。你不需要知道文件格式就能打開它,這個庫能夠根據文件內容自動確定文件格式。要保存文件,使用 Image 類的 save() 方法。保存文件的時候文件名變得重要了。除非你指定格式,否則這個庫將會以文件名的擴展名作為格式保存。
載入文件,並轉化為png格式:
1
2
3
4
5
6
7
8
9
10
11
12
13
"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() 方法的第二個參數可以指定文件格式。
3)創建縮略圖
縮略圖是網路開發或圖像軟體預覽常用的一種基本技術,使用Python的Pillow圖像庫可以很方便的建立縮略圖,如下:
1
2
3
4
5
6
7
# create thumbnail
size = (128,128)
for infile in glob.glob("E:/photoshop/*.jpg"):
f, ext = os.path.splitext(infile)
img = Image.open(infile)
img.thumbnail(size,Image.ANTIALIAS)
img.save(f+".thumbnail","JPEG")
上段代碼對photoshop下的jpg圖像文件全部創建縮略圖,並保存,glob模塊是一種智能化的文件名匹配技術,在批圖像處理中經常會用到。
注意:Pillow庫不會直接解碼或者載入圖像柵格數據。當你打開一個文件,只會讀取文件頭信息用來確定格式,顏色模式,大小等等,文件的剩餘部分不會主動處理。這意味著打開一個圖像文件的操作十分快速,跟圖片大小和壓縮方式無關。
4)圖像的剪切、粘貼與合並操作
Image 類包含的方法允許你操作圖像部分選區,PIL.Image.Image.crop 方法獲取圖像的一個子矩形選區,如:
1
2
3
4
# crop, paste and merge
im = Image.open("E:/photoshop/lena.jpg")
box = (100,100,300,300)
region = im.crop(box)
矩形選區有一個4元元組定義,分別表示左、上、右、下的坐標。這個庫以左上角為坐標原點,單位是px,所以上訴代碼復制了一個 200×200 pixels 的矩形選區。這個選區現在可以被處理並且粘貼到原圖。
1
2
region = region.transpose(Image.ROTATE_180)
im.paste(region, box)
當你粘貼矩形選區的時候必須保證尺寸一致。此外,矩形選區不能在圖像外。然而你不必保證矩形選區和原圖的顏色模式一致,因為矩形選區會被自動轉換顏色。
5)分離和合並顏色通道
對於多通道圖像,有時候在處理時希望能夠分別對每個通道處理,處理完成後重新合成多通道,在Pillow中,很簡單,如下:
1
2
r,g,b = im.split()
im = Image.merge("RGB", (r,g,b))
對於split( )函數,如果是單通道的,則返回其本身,否則,返回各個通道。
6)幾何變換
對圖像進行幾何變換是一種基本處理,在Pillow中包括resize( )和rotate( ),如用法如下:
1
2
out = im.resize((128,128))
out = im.rotate(45) # degree conter-clockwise
其中,resize( )函數的參數是一個新圖像大小的元祖,而rotate( )則需要輸入順時針的旋轉角度。在Pillow中,對於一些常見的旋轉作了專門的定義:
1
2
3
4
5
out = im.transpose(Image.FLIP_LEFT_RIGHT)
out = im.transpose(Image.FLIP_TOP_BOTTOM)
out = im.transpose(Image.ROTATE_90)
out = im.transpose(Image.ROTATE_180)
out = im.transpose(Image.ROTATE_270)
7)顏色空間變換
在處理圖像時,根據需要進行顏色空間的轉換,如將彩色轉換為灰度:
1
2
cmyk = im.convert("CMYK")
gray = im.convert("L")
8)圖像濾波