当前位置: 首页 > news >正文

Python自学21 - Python处理图像

Python自学21 - Python处理图像

在数据可视化、自动化办公、AI 应用和多媒体开发中,图像处理是一个非常常见且实用的技能。Python 拥有丰富的图像处理库,可以轻松完成读取、编辑、转换、批量处理等任务。本文将带你快速入门 Python 图像处理的核心方法与实战技巧。


1️⃣ 常用图像处理库

库名特点适用场景
PillowPython Imaging Library (PIL) 的升级版,简单易用基础图像处理(裁剪、缩放、加水印)
OpenCV功能强大,支持计算机视觉算法图像识别、视频处理、机器视觉
scikit-image基于 NumPy 的科学图像处理图像分析、特征提取
imageio轻量级读写图像/视频格式转换、简单读取

建议:入门先用 Pillow,进阶再结合 OpenCV


2️⃣ Pillow 基础操作

2.1 安装

pip install pillow

2.2 读取与保存图片

from PIL import Image# 打开图片
img = Image.open("example.jpg")# 保存为 PNG 格式
img.save("output.png")

2.3 查看图像信息

print(img.format)   # JPEG
print(img.size)     # (宽, 高)
print(img.mode)     # RGB

3️⃣ 常见图像处理操作

3.1 缩放与裁剪

# 缩放
resized = img.resize((200, 200))
resized.save("resized.jpg")# 裁剪 (左, 上, 右, 下)
cropped = img.crop((100, 100, 400, 400))
cropped.save("cropped.jpg")

3.2 旋转与翻转

# 旋转 90 度
rotated = img.rotate(90)
rotated.save("rotated.jpg")# 水平翻转
flipped = img.transpose(Image.FLIP_LEFT_RIGHT)
flipped.save("flipped.jpg")

3.3 添加滤镜

from PIL import ImageFilterblurred = img.filter(ImageFilter.BLUR)
blurred.save("blurred.jpg")

4️⃣ 批量处理图片

批量处理是自动化的核心场景,例如批量压缩、加水印、格式转换。

import os
from PIL import Imageinput_dir = "images"
output_dir = "output"os.makedirs(output_dir, exist_ok=True)for file in os.listdir(input_dir):if file.lower().endswith((".jpg", ".png")):img = Image.open(os.path.join(input_dir, file))img_resized = img.resize((800, 800))img_resized.save(os.path.join(output_dir, file))

5️⃣ 进阶:OpenCV 简单示例

pip install opencv-python
import cv2# 读取图片
img = cv2.imread("example.jpg")# 转灰度
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 保存
cv2.imwrite("gray.jpg", gray)

6️⃣ 实战建议

  • 统一尺寸:批量处理前先确定目标尺寸,避免比例失真
  • 压缩优化:保存时可调整 quality 参数减少文件体积
  • 格式转换:JPG 适合照片,PNG 适合透明背景,WebP 适合网页优化
  • 自动化脚本:将常用处理封装成函数,结合命令行参数批量执行

7️⃣ 小结

  • Pillow 适合快速入门和日常处理
  • OpenCV 适合计算机视觉和复杂图像分析
  • 批量处理 + 自动化脚本能极大提升效率
  • 图像处理不仅是美化,更是数据分析、AI 应用的重要前置步骤
http://www.dtcms.com/a/395912.html

相关文章:

  • 比特浏览器的IP适配性
  • LLHTTP测试
  • 2. 基于IniRealm的方式
  • 第三十四天:矩阵转置
  • MySQL执行计划:如何发现隐藏的性能瓶颈?
  • embedding多模态模型
  • ⚡ GitHub 热榜速报 | 2025 年 09 月 第 3 周
  • Synchronized的实现原理:深入理解Java线程同步机制
  • 初识C++、其中的引用、类(class)和结构体(struct)
  • Qt之常用控件之QWidget(四)
  • Pod生命周期
  • 【课堂笔记】复变函数-3
  • 深度学习-自然语言处理-序列模型与文本预处理
  • 【C语言】迭代与递归:两种阶乘实现方式的深度分析
  • CLIP多模态模型
  • 快手前端三面(准备一)
  • 前端-JS基础-day1
  • 【开题答辩全过程】以 J2EE在电信行业的应用研究为例,包含答辩的问题和答案
  • C++ QT Json数据的解析
  • RAG——动态护栏
  • Spring Boot 全局鉴权认证简单实现方案
  • 【靶场】webshop渗透攻击
  • 深入浅出现代GPU架构:核心类型、精度模式与选择
  • 开发避坑指南(53):git 命令行标签维护方法
  • javaEE初阶 网络编程(socket初识)
  • 基于Springboot + vue3实现的实验室研究生信息管理系统
  • TwinCat是什么
  • Linux 修炼:进程概念(下)
  • PostgreSQL 全表 count 优化实践:从 SeqScan 痛点分析到 heapam 改进与性能突破
  • 第17讲 机器学习vs神经网络