机器学习四剑客4——PIL
生活随笔
收集整理的這篇文章主要介紹了
机器学习四剑客4——PIL
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
- PIL庫(kù)是一個(gè)具有強(qiáng)大圖像處理能力的第三方庫(kù)
- 在命令行下的安裝方法:pip install pillow
- 在使用過(guò)程中的引入方法:from PIL import Image
- Image 是 PIL 庫(kù)中代表一個(gè)圖像的類(對(duì)象)
- 圖像是一個(gè)由像素組成的二維矩陣,每個(gè)元素是一個(gè)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) # 獲取圖片的數(shù)組
print('shape',arr.shape) # 獲取數(shù)組的狀態(tài)
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 :二值圖像? ??每個(gè)像素用8個(gè)bit表示,0表示黑,255表示白
- 模式L: 灰度圖像? ? 每個(gè)像素用8個(gè)bit表示,0為黑,255為白,其他數(shù)字表示不同的灰度
- 轉(zhuǎn)換公式: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() # 獲取圖片左上角和右下角的坐標(biāo)
print(bbox)
width, height = img.width, img.height # 獲取圖片寬度和高度
print(width, height)
- 圖片旋轉(zhuǎn)
from PIL import Image
import matplotlib.pyplot as pltimg = Image.open('D:/Users/xuyf2/Desktop/jier/company.jpg') # 讀取圖片
img_rotate = img.rotate(45) # 將圖片旋轉(zhuǎn)45度
plt.imshow(img_rotate) # 顯示旋轉(zhuǎn)后的圖片
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()四個(gè)參數(shù)分別是:(左上角點(diǎn)的x坐標(biāo),左上角點(diǎn)的y坐標(biāo),右下角點(diǎn)的x坐標(biāo),右下角點(diǎn)的y坐標(biāo))
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)# 統(tǒng)一圖片尺寸,可以自定義設(shè)置(寬,高)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')
總結(jié)
以上是生活随笔為你收集整理的机器学习四剑客4——PIL的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 红龙鱼该如何分类,市场大概得多少价位?
- 下一篇: 神经网络常用激活函数