机器学习四剑客4——PIL
生活随笔
收集整理的這篇文章主要介紹了
机器学习四剑客4——PIL
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
- PIL庫是一個具有強大圖像處理能力的第三方庫
- 在命令行下的安裝方法:pip install pillow
- 在使用過程中的引入方法:from PIL import Image
- Image 是 PIL 庫中代表一個圖像的類(對象)
- 圖像是一個由像素組成的二維矩陣,每個元素是一個RGB值
# 讀取圖片
from PIL import Image
import numpy as np
from matplotlib import pyplot as pltimg = Image.open('D:/Users/xuyf2/Desktop/jier/photo.jpg')
print('img',img)arr = np.array(img) # 獲取圖片的數組
print('shape',arr.shape) # 獲取數組的狀態
print(arr)
# img.show()
plt.imshow(img)
plt.show()
- img.convert(mode=None, matrix=None, dither=None, palette=0, colors=256)
- PIL有九種不同模式: 1,L,P,RGB,RGBA,CMYK,YCbCr,I,F
- 模式1 :二值圖像? ??每個像素用8個bit表示,0表示黑,255表示白
- 模式L: 灰度圖像? ? 每個像素用8個bit表示,0為黑,255為白,其他數字表示不同的灰度
- 轉換公式:L = R * 299/1000 + G * 587/1000+ B * 114/1000
# 讀取圖片
from PIL import Image
from matplotlib import pyplot as pltimg = Image.open('D:/Users/xuyf2/Desktop/jier/company.jpg')#圖片灰度處理
gray_img = img.convert('L')plt.imshow(gray_img)
plt.show()
- ?獲取圖像基本信息
from PIL import Imageimg = Image.open('D:/Users/xuyf2/Desktop/jier/company.jpg')
# 獲取圖片的基本信息
bands = img.getbands() # 顯示該圖片的所有通道
print(bands)
bbox = img.getbbox() # 獲取圖片左上角和右下角的坐標
print(bbox)
width, height = img.width, img.height # 獲取圖片寬度和高度
print(width, height)
- 圖片旋轉
from PIL import Image
import matplotlib.pyplot as pltimg = Image.open('D:/Users/xuyf2/Desktop/jier/company.jpg') # 讀取圖片
img_rotate = img.rotate(45) # 將圖片旋轉45度
plt.imshow(img_rotate) # 顯示旋轉后的圖片
plt.show()
- 圖片裁剪
from PIL import Image
import matplotlib.pyplot as pltimg = Image.open('D:/Users/xuyf2/Desktop/jier/company.jpg') # 讀取圖片
img1 = img.crop((126,111,381,249))
# 剪切 crop()四個參數分別是:(左上角點的x坐標,左上角點的y坐標,右下角點的x坐標,右下角點的y坐標)
img1.save('D:/Users/xuyf2/Desktop/jier/company_1.jpg') # 保存圖片
plt.imshow(img1) # 展示圖片
plt.show()
- 圖片縮放
from PIL import Image
import matplotlib.pyplot as pltimg = Image.open('D:/Users/xuyf2/Desktop/jier/company.jpg') # 讀取圖片
print(img.size)
width,height = img.size
img1 = img.resize((int(width*0.6),int(height*0.4)),Image.ANTIALIAS) # 縮放print(img1.size)#展示圖片
plt.imshow(img1)
plt.show()
- ?圖片拼接
from PIL import Image
import cv2
from matplotlib import pyplot as pltdef join(png1, png2, flag='horizontal'):img1, img2 = Image.open(png1), Image.open(png2)# 統一圖片尺寸,可以自定義設置(寬,高)img1 = img1.resize((110, 124), Image.ANTIALIAS)img2 = img2.resize((110, 124), Image.ANTIALIAS)size1, size2 = img1.size, img2.sizeif flag == 'horizontal':joint = Image.new('RGB', (size1[0] + size2[0], size1[1]))loc1, loc2 = (0, 0), (size1[0], 0)joint.paste(img1, loc1)joint.paste(img2, loc2)plt.imshow(joint)plt.show()# cv2.imshow("joint", "joint")# joint.save('horizontal.png')elif flag == 'vertical':joint = Image.new('RGB', (size1[0], size1[1] + size2[1]))loc1, loc2 = (0, 0), (0, size1[1])joint.paste(img1, loc1)joint.paste(img2, loc2)# joint.save('vertical.png')if __name__ == '__main__':# 兩張圖片地址:png1 = r"D:/Users/xuyf2/Desktop/lego_jier/crop2/2cp1637243269.jpg"png2 = r"D:/Users/xuyf2/Desktop/lego_jier/crop1/1cp1637243581.jpg"# 橫向拼接join(png1, png2, flag='horizontal')# 縱向拼接# join(png1, png2, flag='vertical')
總結
以上是生活随笔為你收集整理的机器学习四剑客4——PIL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 红龙鱼该如何分类,市场大概得多少价位?
- 下一篇: 镀锌钢管多少钱一米啊?