本文目錄一覽:
Python圖像處理
創建一個簡單的圖像與圖像混合
1.1 在Image模塊中,提供了創建圖像的方法。主要是通過**Image.new(mode, size, color)**實現,該方法傳入三個參數:
mode:圖像的創建模式
size:圖像的大小
color:圖像的顏色
用該方法可以創建一個簡單的圖像,之後我們可以通過save方法將圖像保存:
1.2生成圖片如下
1.3 圖像混合
透明度混合
透明度混合主要是使用**Image中的blend(im1, im2, alpha)**方法,對該方法的解釋如下:
im1:Image對象,在混合的過程中,透明度設置為(1-apha)
im2:Image對象,在混合的過程中,透明度設置為(apha)
alpha:透明度,取值是0-1。當透明度為0是,顯示im1對象;當透明度為1時,顯示im2對象
代碼實現如下
1.4原圖和混合圖的對比
1.5 遮罩混合
通過Image.composite(im1, im2, mask)方法實現遮罩混合。三個參數都是Image對象,該方法的作用就是使用mask來混合im1和im2。
1.6im1、im2和遮罩混合效果對比如下
python怎麼關閉視圖模式
1、首先在PyCharm軟件中找到運行窗口。
2、其次按下運行的設置按鈕。
3、最後點擊關閉視圖模式即可。
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)圖像濾波
python中,如何讓一個圖片按照設定的軌跡運行,並隨時可以停止運行?
一小步一小步的move,每一步的移動方向根據軌跡方程算出來。想停的時候別再move就行了
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/157798.html