欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 圖像處理Pillow安裝、使用實戰(zhàn)應(yīng)用小結(jié)

 更新時間:2025年11月10日 10:30:36   作者:蕭鼎  
Pillow是Python中功能強大的圖像處理庫,支持多種圖像格式和操作,本文介紹了Pillow的安裝、基礎(chǔ)操作、像素級操作、圖像增強、繪圖與文字處理、圖像通道與混合、圖像格式與批處理、高級技巧與性能優(yōu)化,以及Pillow在AI圖像預(yù)處理中的應(yīng)用,感興趣的朋友跟隨小編一起看看吧

一、前言:為什么選擇 Pillow?

在 Python 的圖像處理世界里,Pillow 是最經(jīng)典、最實用、也是最常用的基礎(chǔ)庫之一。
它是 Python Imaging Library (PIL) 的一個分支,經(jīng)過多年更新與維護,如今已經(jīng)成為 Python 圖像處理的事實標準。

Pillow 能夠完成從基礎(chǔ)到高級的幾乎所有圖像任務(wù):

  • 打開、顯示、保存各種圖像格式(JPEG、PNG、BMP、TIFF 等)
  • 進行圖像的縮放、裁剪、旋轉(zhuǎn)、翻轉(zhuǎn)、濾鏡和增強
  • 添加文字、水印、幾何圖形
  • 批量圖像處理
  • 與 NumPy、OpenCV、TensorFlow 等配合做 AI 圖像預(yù)處理

本文將系統(tǒng)介紹 Pillow 的功能、核心模塊、使用技巧與進階實踐。
無論你是初學(xué)者,還是圖像算法工程師,都能從中獲得啟發(fā)。

二、安裝與快速上手

1. 安裝 Pillow

在大多數(shù) Python 環(huán)境中,Pillow 可以直接通過 pip 安裝:

pip install pillow

驗證是否安裝成功:

from PIL import Image
print(Image.__version__)

如果能正常輸出版本號,例如 10.2.0,說明 Pillow 已正確安裝。

2. 快速體驗

我們從一個最簡單的例子開始,打開并顯示一張圖片:

from PIL import Image
# 打開圖像
img = Image.open("example.jpg")
# 顯示圖像
img.show()
# 保存為另一種格式
img.save("example_converted.png")

是不是很簡單?
僅幾行代碼,你就能完成打開、顯示、格式轉(zhuǎn)換等操作。

三、圖像的基礎(chǔ)操作

1. 圖像的屬性

Pillow 的 Image 對象包含了大量信息:

img = Image.open("example.jpg")
print(img.format)   # 圖像格式,如 JPEG
print(img.size)     # (寬, 高)
print(img.mode)     # 模式,如 RGB、RGBA、L、CMYK

常見模式說明:

模式含義通道數(shù)
1黑白(二值)1
L灰度圖像1
RGB彩色圖像3
RGBA含透明度通道的彩色圖像4
CMYK印刷常用顏色空間4

2. 圖像的裁剪與縮放

(1)裁剪

box = (100, 100, 400, 400)
region = img.crop(box)
region.show()

box 表示左上角和右下角的坐標 (left, upper, right, lower)。

(2)縮放

resized = img.resize((200, 200))
resized.show()

可以選擇不同的插值算法:

from PIL import Image

img.resize((200, 200), Image.Resampling.LANCZOS)

3. 旋轉(zhuǎn)與翻轉(zhuǎn)

# 順時針旋轉(zhuǎn)45度
rotated = img.rotate(45)
# 水平翻轉(zhuǎn)
flipped = img.transpose(Image.FLIP_LEFT_RIGHT)
# 垂直翻轉(zhuǎn)
flipped_v = img.transpose(Image.FLIP_TOP_BOTTOM)

4. 顏色模式轉(zhuǎn)換

gray = img.convert("L")   # 轉(zhuǎn)灰度
rgba = img.convert("RGBA")

常用于人臉檢測、OCR 前的預(yù)處理。

四、像素級操作

Pillow 允許直接訪問像素進行操作。

1. getpixel() 與 putpixel()

r, g, b = img.getpixel((10, 10))
print(r, g, b)
img.putpixel((10, 10), (255, 0, 0))

可用于修改單個像素、繪制特定形狀。

2. 使用 NumPy 操作像素

與 NumPy 結(jié)合可以極大提高效率:

import numpy as np
from PIL import Image
img = Image.open("example.jpg")
arr = np.array(img)
# 反轉(zhuǎn)顏色
arr = 255 - arr
Image.fromarray(arr).show()

NumPy 讓 Pillow 具備了更高的靈活性,常用于 AI 模型前的圖像預(yù)處理。

五、圖像增強與濾鏡

Pillow 提供了多個增強模塊,可提升圖像質(zhì)量或增加特效。

1. 圖像增強模塊

from PIL import ImageEnhance
enhancer = ImageEnhance.Brightness(img)
bright = enhancer.enhance(1.5)  # 提亮 50%
bright.show()

常見增強類型:

模塊功能
ImageEnhance.Brightness亮度
ImageEnhance.Contrast對比度
ImageEnhance.Color飽和度
ImageEnhance.Sharpness銳度

例如:

ImageEnhance.Contrast(img).enhance(2.0).show()

2. 圖像濾鏡

Pillow 提供了豐富的濾鏡功能:

from PIL import ImageFilter
# 模糊
blurred = img.filter(ImageFilter.BLUR)
# 邊緣增強
edge = img.filter(ImageFilter.EDGE_ENHANCE)
# 輪廓
contour = img.filter(ImageFilter.CONTOUR)

其他常用濾鏡包括:

  • ImageFilter.SHARPEN:銳化
  • ImageFilter.EMBOSS:浮雕
  • ImageFilter.FIND_EDGES:邊緣檢測
  • ImageFilter.SMOOTH:平滑

六、繪圖與文字處理

Pillow 自帶 ImageDraw 模塊,可以在圖片上繪制文字與幾何圖形。

1. 繪制幾何圖形

from PIL import ImageDraw
draw = ImageDraw.Draw(img)
draw.rectangle((50, 50, 200, 200), outline="red", width=3)
draw.ellipse((100, 100, 180, 180), fill="blue")
draw.line((0, 0, 300, 300), fill="green", width=2)

2. 繪制文字

from PIL import ImageFont, ImageDraw
font = ImageFont.truetype("arial.ttf", 36)
draw = ImageDraw.Draw(img)
draw.text((50, 50), "Hello Pillow!", fill="yellow", font=font)
img.show()

可以用于生成水印、驗證碼、封面圖等。

七、圖像通道與混合

1. 通道拆分與合并

r, g, b = img.split()
merged = Image.merge("RGB", (r, g, b))

可以單獨調(diào)整某個通道的亮度或?qū)Ρ榷取?/p>

2. 圖像混合與透明度控制

from PIL import Image
img1 = Image.open("a.jpg")
img2 = Image.open("b.jpg").resize(img1.size)
blended = Image.blend(img1, img2, alpha=0.5)
blended.show()

八、圖像格式與批處理

1. 圖像格式轉(zhuǎn)換

Pillow 支持大量格式(JPEG、PNG、BMP、TIFF、ICO、WEBP 等):

img.save("output.webp", "WEBP", quality=90)

2. 批量處理示例

下面的腳本能自動遍歷文件夾中的所有圖片并壓縮尺寸:

import os
from PIL import Image
def batch_resize(input_dir, output_dir, size=(512, 512)):
    os.makedirs(output_dir, exist_ok=True)
    for file in os.listdir(input_dir):
        if file.endswith(('.jpg', '.png')):
            path = os.path.join(input_dir, file)
            img = Image.open(path)
            img = img.resize(size)
            img.save(os.path.join(output_dir, file))
    print("? 批量處理完成!")
batch_resize("images", "resized")

九、高級技巧與性能優(yōu)化

1. 懶加載機制

Image.open() 實際上不會立即讀取所有像素,而是延遲加載,直到需要時才讀取。

img = Image.open("large.jpg")
print(img.size)  # 不會立即加載整個文件

這能有效節(jié)省內(nèi)存。

2. 壓縮與節(jié)省空間

img.save("compressed.jpg", quality=70, optimize=True)
  • quality 控制壓縮率(1–95)
  • optimize 自動優(yōu)化存儲結(jié)構(gòu)

3. 緩存優(yōu)化

在批量處理中,可以啟用線程池或使用 Image.thumbnail() 自動生成縮略圖:

img.thumbnail((300, 300))

相比 resize(),thumbnail() 會保持縱橫比,并在原地修改。

十、Pillow + AI 圖像預(yù)處理

在 AI 模型訓(xùn)練前,圖像預(yù)處理是關(guān)鍵環(huán)節(jié)。
Pillow 與 NumPy 結(jié)合,可以輕松完成:

from PIL import Image
import numpy as np
def preprocess_image(path):
    img = Image.open(path).convert("RGB").resize((224, 224))
    arr = np.array(img) / 255.0
    return arr

配合 PyTorch 或 TensorFlow:

import torch
tensor = torch.tensor(preprocess_image("cat.jpg")).permute(2, 0, 1).unsqueeze(0)

十一、Pillow 在項目中的應(yīng)用場景

  1. Web 后端圖像服務(wù):用戶頭像上傳、壓縮、裁剪。
  2. 數(shù)據(jù)增強:用于機器學(xué)習(xí)模型的訓(xùn)練樣本擴展。
  3. 圖像內(nèi)容生成:自動化生成海報、證件照、表情包。
  4. OCR 預(yù)處理:文字識別前的灰度化、二值化。
  5. 視頻幀處理:結(jié)合 OpenCV 對視頻幀進行逐幀處理。

十二、實戰(zhàn)案例:自動生成帶水印的縮略圖

from PIL import Image, ImageDraw, ImageFont
import os
def watermark_and_resize(input_path, output_path, watermark_text="? MySite"):
    img = Image.open(input_path).convert("RGBA")
    img.thumbnail((400, 400))
    watermark = Image.new("RGBA", img.size, (0,0,0,0))
    draw = ImageDraw.Draw(watermark)
    font = ImageFont.truetype("arial.ttf", 20)
    draw.text((10, img.size[1]-30), watermark_text, fill=(255,255,255,128), font=font)
    combined = Image.alpha_composite(img, watermark)
    combined.save(output_path, "PNG")
for file in os.listdir("images"):
    if file.endswith(".jpg"):
        watermark_and_resize(f"images/{file}", f"output/{file}")

結(jié)果:每張圖片都會自動生成一個帶透明水印的縮略圖。

十三、Pillow 的局限與替代方案

雖然 Pillow 功能強大,但也有一些局限性:

局限替代或補充
無 GPU 加速OpenCV / PyTorch Vision
處理大圖性能不足NumPy + CuPy
高級圖像分割 / 檢測需結(jié)合深度學(xué)習(xí)框架

但在輕量任務(wù)、Web 服務(wù)、腳本工具中,Pillow 的性能與穩(wěn)定性仍無可替代。

十四、總結(jié)與展望

Pillow 是 Python 圖像處理的“瑞士軍刀”,
它的優(yōu)勢在于:

  • 簡單易用,API 清晰
  • 支持廣泛的格式與操作
  • 可與 NumPy、OpenCV、AI 框架無縫結(jié)合
  • 適合腳本、Web、AI 各類場景

未來,隨著圖像 AI 的發(fā)展,Pillow 仍將作為圖像預(yù)處理的基礎(chǔ)層存在。
它不會被取代,而是被融合到更高層次的智能圖像系統(tǒng)中。

? 結(jié)語

無論你是剛開始學(xué)習(xí) Python 圖像處理的學(xué)生,
還是正在開發(fā) AI 圖像識別系統(tǒng)的工程師,
掌握 Pillow 是你進入圖像世界的第一步。

到此這篇關(guān)于Python 圖像處理利器:Pillow 深度詳解與實戰(zhàn)應(yīng)用的文章就介紹到這了,更多相關(guān)Python Pillow圖像處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python八皇后問題解答過程詳解

    Python八皇后問題解答過程詳解

    這篇文章主要介紹了Python講解八皇后問題過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • python列表刪除和多重循環(huán)退出原理詳解

    python列表刪除和多重循環(huán)退出原理詳解

    這篇文章主要介紹了python列表刪除和多重循環(huán)退出原理詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • Python實現(xiàn)破解12306圖片驗證碼的方法分析

    Python實現(xiàn)破解12306圖片驗證碼的方法分析

    這篇文章主要介紹了Python實現(xiàn)破解12306圖片驗證碼的方法,涉及Python圖片截取、調(diào)用百度識圖及正則截取等相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • python中關(guān)于對super()函數(shù)疑問解惑

    python中關(guān)于對super()函數(shù)疑問解惑

    Python中的super()是用于調(diào)用父類(或父類的父類...)方法的函數(shù),主要用于多繼承,單繼承問題不大,下面這篇文章主要給大家介紹了關(guān)于python中關(guān)于對super()函數(shù)疑問解惑的相關(guān)資料,需要的朋友可以參考下
    2022-08-08
  • Django model select的多種用法詳解

    Django model select的多種用法詳解

    最近看到 大神 運維咖啡吧的 一篇文章,這里只做個備份,講的是各種 django model 查詢,發(fā)現(xiàn)不錯,十分感謝該大神的無私奉獻
    2019-07-07
  • Python學(xué)習(xí)之字典和集合的使用詳解

    Python學(xué)習(xí)之字典和集合的使用詳解

    Python 中字典和集合也是非常相近的概念,而且從外觀看上去,也有那么一絲絲的相似。本文將從字典基本知識入手,為你展開字典類型數(shù)據(jù)的各個知識點,需要的可以參考一下
    2022-11-11
  • Python從入門到精通之Hash函數(shù)的使用詳解

    Python從入門到精通之Hash函數(shù)的使用詳解

    Python提供了強大而靈活的Hash函數(shù),用于在各種應(yīng)用中實現(xiàn)數(shù)據(jù)存儲、數(shù)據(jù)校驗、加密等功能,下面將從入門到精通介紹Python中Hash函數(shù)的使用,感興趣的可以了解一下
    2023-08-08
  • Python實現(xiàn)監(jiān)控屏幕界面內(nèi)容變化并發(fā)送通知

    Python實現(xiàn)監(jiān)控屏幕界面內(nèi)容變化并發(fā)送通知

    這篇文章主要為大家詳細介紹了如何利用Python實現(xiàn)實時監(jiān)控屏幕上的信息是否發(fā)生變化并發(fā)送通知,文中的示例代碼講解詳細,感興趣的可以了解一下
    2023-04-04
  • 使用Python實現(xiàn)繪制地圖的示例詳解

    使用Python實現(xiàn)繪制地圖的示例詳解

    這篇文章主要為大家詳細介紹了如何使用Python實現(xiàn)繪制地圖相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • Python自定義字符串輸出格式的完全指南

    Python自定義字符串輸出格式的完全指南

    在Python編程中,??字符串格式化??和??輸出控制??是每個開發(fā)者必須掌握的核心技能,本文將深入探討Python中各種字符串格式化技術(shù),希望對大家有所幫助
    2025-10-10

最新評論