導航:首頁 > 動漫圖片 > python讀入的圖片怎麼縮放或移動

python讀入的圖片怎麼縮放或移動

發布時間:2023-05-09 14:25:53

㈠ 利用Python進行圖像尺寸調整、旋轉、平移

利用Python中的PIL(Pyhon Image Library)進行簡單的圖像處理

㈡ 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實現一個坐標圖的平移和縮放

最容易想到的應該是DP演算法,即取初始軌跡的起洞山點A和納慎中終點B連線,計算每個點到這條孝扒線的距離,距離最大的點C若小於要求誤差則結束;
否則將C點加入壓縮後的數據集,對AC和CB重復以上過程直至滿足誤差要求。

㈣ python中圖例的位置怎麼手動調整

1.最近遇到一個問題,關於圖例legend如何畫在圖外的問題,並以適合的比例顯示出來。

2.首先傳統的做法如下,這種方式並不能滿足我的要橘橡圓求,而且是顯示在圖內。

ax1.legend(loc='center left', bbox_to_anchor=(0.2, 1.12),ncol=3)1

loc表示圖例的位置,有多種形式:

『North』 圖例標識放在圖頂端
『South』 圖例標識放在圖底端
『East』 圖例標識放在圖右方
『West』 圖例標識放在圖左方
『NorthEast』 圖例標識放在圖右上方(默認)
『NorthWest 圖例標識放在圖左上方
『SouthEast』 圖例標識放在圖右下角
『SouthWest』 圖例標識放在圖左下角12345678

有人說簡單,有相同的方式,如下經測試不行,可能是本人用的python版本不行,所用的方式就是和前面一樣,採用如下的方式來替換上面的legend位置。

『NorthOutside』 圖例標識放在圖框外側上方
『SouthOutside』 圖例標識放在圖框外側下方
『EastOutside』 圖例標識放在圖框外側右方
『WestOutside』 圖例標識放在圖框外側左方
『NorthEastOutside』 圖例標識放在圖框外側右上方
『NorthWestOutside』 圖例標識放在圖框外側左上方
『SouthEastOutside』 圖例標識放在圖框外側右下方
『SouthWestOutside』 圖例標識放在圖框外側左下方
(以上幾個將圖例標識放在框圖外)
『Best』 圖標標識放在圖框內不與圖沖突的最佳位置
『如擾BestOutside』 圖標標識放在圖框外使用最小空間的最佳位置1234567891011

bbox_to_anchor:表示legend的位置,前一個表示左右,後一個表示上下。當使用這個參數時。loc將不再起正常的作用,ncol=3表示圖例三列顯示。

3.有人說要解決這個問題可以採用對坐標軸放大或是縮小的方式,經本人測試可以行,但是,放大縮小的比率不讓人滿意,且很難控制到適合的位置。有興趣可以參考鏈接,最終得出此方法不行。

4.那麼就沒有辦法了嗎?NO.NO,請看下面,最終完成如下。

這就是本人要的效果,不廢話,具體做法如下

box = ax1.get_position()
ax1.set_position([box.x0, box.y0, box.width , box.height* 0.8])12

首先按上面的方式,如果你想將圖例放上面就box.height*0.8,放右邊就box.width*0.8其它方式一樣。同時配合下面來使用。

ax1.legend(loc='center left', bbox_to_anchor=(0.2, 1.12),ncol=3)1

主要是bbox_to_anchor的使用,自己可以修改參數試下,good luck for you.

閱讀全文

版權聲明:原創圓塌文章,未經博主

㈤ 在python中怎麼裁剪圖片大小如何利用Python裁剪圖片

先對圖片進行二值化處理。

由於這些格子大小均勻,所以可以使用常規的基敬蔽除法,先裁剪出第一個格子:

e=a[:,:,0].shape

f=a[0:int(e[0]/9),0:int(e[1]/9)]

io.imsave('00.png',f)

下圖稿鋒是等比例放大的效果圖。

第一列第二個格子:

m=1

n=0

f=a[int(m*e[0]/9):int((m+1)*e[0]/9),int(n*e[1]/9):int((n+1)*e[1]/9)]

第一行第二個格子:

m=0

n=1

f=a[int(m*e[0]/9):int((m+1)*e[0]/9),int(n*e[1]/9):int((n+1)*e[1]/9)]

這樣,用for循環,可以實現全部裁剪:

for m in range(9):

for n in range(9):

f=a[int(m*e[0]/9):int((m+1)*e[0]/9),int(n*e[1]/9):int((n+1)*e[1]/9)]

io.imsave('0/'+str(m)+'-'+str(n)+'.png',f)

去除邊界的黑框,只保留數字或空白:

for m in range(9):

for n in range(9):

f=a[int(m*e[0]/9)+10:int((m+1)*e[0]/9)-10,int(n*e[1]/9)+10:int((n+1)*e[1]/9)-10]

io.imsave('0/'+str(m)+'-'+str(n)+'搏州.png',f)

㈥ Python 讀取文件夾將裡面的圖片處理成想要的大小並保存在個指定位置

#-*-coding:utf-8-*-
importcv2
importos
importnumpy
importcutHumanFace

defsaveCutFace(filePath,pathSave='cutFace',normalizeWidth=300,normalizeHeight=300):
"""
:paramfilePath:string,文件夾路徑
"""

ifnotos.path.exists(savePath):
os.makedirs(savePath);#保存的文件夾

files=os.listdir(filePath);#列出目錄下的所有文件

normalizeWidth=100#以100×100為大小
normalizeHeight=100
forfileinfiles:
normalizeFace=cv2.resize(cutFace,(normalizeWidth,normalizeHeight),interpolation=cv2.INTER_AREA);
cv2.imwrite(savePath,normalizeFace);

㈦ python 圖片移動

#-*-coding:gbk-*-
importImage
importImageDraw
importImageChops

im=Image.new('RGB',(800,600),'white')
im2=Image.open('test.png')

#測試圖放畫布左邊,畫布右邊底色塗黃
left=(im.size[0]/2-im2.size[0])/2
upper=(im.size[1]-im2.size[1])/2
im.paste(im2,(left,upper))
im.paste('yellow',(im.size[0]/2,0)+im.size)
im.show()

#因要旋轉得計算測試圖對角線,然後切出
d=int((im2.size[0]**2+im2.size[1]**2)**0.5)
left=(im.size[0]/2-d)/2
upper=(im.size[1]-d)/2
bbox=(left,upper,left+d,upper+d)
cp=im.crop(bbox)

#圖底不是黑先做mask再作旋轉,
#mask做法不一,按測試圖可選取g或b通道
r,g,b=cp.split()
mask=g.point(lambdai:i<250and255)
angle=30
mask=mask.rotate(angle)
cp=cp.rotate(angle)

#利用mask貼在畫布右邊黃底區內
im.paste(cp,(left+im.size[0]/2,upper),mask)
im.show()

閱讀全文

與python讀入的圖片怎麼縮放或移動相關的資料

熱點內容
寶寶衣服搭配圖片夏 瀏覽:709
帶有文字圖片微信圖片 瀏覽:809
學生真實生活男生背影圖片 瀏覽:10
山裡的真野人圖片大全 瀏覽:201
陽光動漫女圖片 瀏覽:787
男生3毫米頭發圖片 瀏覽:129
怎麼把圖片移動到其他圖片上 瀏覽:507
短發女生背影卡通頭像圖片大全 瀏覽:467
小學女生胸的圖片大全 瀏覽:80
迪卡手錶價格圖片 瀏覽:561
殺小女孩的那個男孩圖片 瀏覽:659
碎竹機價格及圖片 瀏覽:390
剪映怎麼替換倒車鏡里的圖片 瀏覽:670
我姓范的文字圖片 瀏覽:92
瓷器盆圖片及價格 瀏覽:592
簡單的小鬧鍾手工圖片 瀏覽:993
好毛筆價格圖片 瀏覽:454
動漫圖片女生簡單好畫素描 瀏覽:638
如何拍照好看姿勢圖片 瀏覽:140
動畫女生露屁股圖片 瀏覽:787