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

【Python】高效图像处理库:pyvips


月亮慢慢变圆,日子慢慢变甜。

在这里插入图片描述

在图像处理领域,pyvips 是一个轻量级且高效的库,适合处理大规模图像、实现高性能的操作。相较于其他常见的图像处理库如 PIL 或 OpenCV,pyvips 以其低内存占用和出色的速度脱颖而出。本文将介绍 pyvips 的基本功能及其优势,并提供一些基础示例代码,帮助你在项目中快速上手。

华丽的分割线

⭕️宇宙起点

    • ❓ 为什么选择 pyvips?
    • 📦 安装 pyvips
    • 💯 基本用法示例
      • 1. 加载和保存图像
      • 2. 图像缩放和裁剪
      • 3. 图像滤镜与转换
      • 4. 图像拼接
    • 🥇 Pyvips 的性能优势
    • 📥 下载地址
    • 💬 结语
    • 📒 参考文献


标题1

❓ 为什么选择 pyvips?

pyvips 是基于 libvips 的 Python 绑定库,而 libvips 是一个高效的 C 库,专为处理大尺寸图像设计。与其他图像库相比,pyvips 有一些明显的优势:

  1. 速度快:libvips 是高度优化的,并行处理图像,尤其在处理大图时,它的性能通常比 PIL 和 OpenCV 要好。
  2. 低内存占用:与许多加载整个图像到内存中的库不同,pyvips 通过流式处理图像,内存消耗显著更低。
  3. 多格式支持:pyvips 支持大量的图像格式,如 TIFF、JPEG、PNG、GIF、WebP 等。
  4. 简洁的 API:pyvips 提供了简洁、直观的 API,使得它的使用非常方便。

标题2

📦 安装 pyvips

安装 pyvips 非常简单,你只需要运行以下命令:

pip install pyvips

注意,pyvips 依赖 libvips,因此你可能需要先安装 libvips。对于 Ubuntu,你可以通过以下命令安装:

sudo apt-get install libvips-dev

标题3

💯 基本用法示例

1. 加载和保存图像

首先,看看如何使用 pyvips 加载和保存图像。与其他图像处理库类似,pyvips 可以读取不同格式的图像文件并将它们保存为新的格式。

import pyvips

# 加载图像
image = pyvips.Image.new_from_file('input.jpg')

# 保存为 PNG 格式
image.write_to_file('output.png')

2. 图像缩放和裁剪

pyvips 支持快速的图像缩放和裁剪操作。以下代码演示了如何缩放图像并进行裁剪。

# 缩放图像(倍率 0.5)
scaled_image = image.resize(0.5)

# 裁剪图像,起点(100, 100),裁剪 300x300 区域
cropped_image = scaled_image.crop(100, 100, 300, 300)

# 保存裁剪后的图像
cropped_image.write_to_file('cropped_output.jpg')

3. 图像滤镜与转换

你还可以使用 pyvips 对图像应用各种滤镜或进行颜色空间转换。例如,下面的代码将图像转换为灰度图。

# 转换为灰度图
grayscale_image = image.colourspace('b-w')

# 保存灰度图像
grayscale_image.write_to_file('grayscale_output.jpg')

4. 图像拼接

pyvips 也可以轻松地将多张图像拼接在一起:

image1 = pyvips.Image.new_from_file('image1.jpg')
image2 = pyvips.Image.new_from_file('image2.jpg')

# 水平拼接两张图像
joined_image = image1.join(image2, direction='horizontal')

# 保存拼接结果
joined_image.write_to_file('joined_output.jpg')

标题4

🥇 Pyvips 的性能优势

pyvips 的性能优势尤其体现在处理大图或批量处理图像时。它可以在不加载整个图像到内存中的情况下进行操作,适合需要高效批量处理图像的场景。例如,在医疗影像处理、卫星图像分析、大规模 Web 图像处理等场景中,pyvips 是一个非常强大的工具。

以下是一个简单的性能对比实验:处理一张 5000x5000 分辨率的图像,并将其缩放至 50% 的大小。使用 PIL 和 pyvips 分别执行这一任务,结果如下:

图像库处理时间内存使用
PIL1.2 秒600 MB
pyvips0.3 秒50 MB

可以看到,pyvips 在处理大图像时不仅速度更快,且内存使用也大幅减少。


标题5

📥 下载地址


pyvips 最新版 下载地址


标题6

💬 结语

pyvips 是一个高效的图像处理库,尤其适用于大图像和批量处理场景。它的速度和低内存占用使得它成为了替代传统图像处理库的优秀选择。如果你在处理图像时遇到性能瓶颈,建议尝试将 pyvips 引入到你的工作流程中。


标题7

📒 参考文献

  • pyvips GitHub仓库

希望本文能帮助你更好地理解 pyvips 的强大之处,并为你的项目带来性能提升!


TheEnd


在这里插入图片描述
在这里插入图片描述


http://www.kler.cn/news/307627.html

相关文章:

  • 存储器与寄存器
  • Centos中dnf和yum区别对比
  • 使用 IntelliJ IDEA 导入已有的 Spring Maven 项目并运行
  • Elment-plus组件失效(没有样式)(0916)
  • 宏任务和微任务+超全面试真题(持续更新ing
  • 【Elasticsearch系列六】系统命令API
  • Android DPC模式多开 APP
  • 安全区域边界等保测评
  • 安全隔离上网的有效途径:沙盒
  • QT开发:深入详解QtCore模块事件处理,一文学懂QT 事件循环与处理机制
  • SQL使用IN进行分组统计时如何将不存在的字段显示为0
  • CISP-PTE CMS sqlgun靶场渗透测试
  • 学习笔记 韩顺平 零基础30天学会Java(2024.9.16)
  • 神经网络_使用tensorflow对fashion mnist衣服数据集分类
  • uniapp js修改数组某个下标以外的所有值
  • 2024.09.08 校招 实习 内推 面经
  • python Open3D 验证安装崩溃
  • 论文内容分类与检测系统源码分享
  • String 72变 ---------各种字符串处理方法
  • WSL挂载U盘或移动硬盘
  • 一起对话式学习-机器学习02——机器学习方法三要素
  • Apache-wed服务器环境的安装
  • 智能工厂的设计软件 单一面问题分析方法的“独角兽”程序
  • JVM面试真题总结(七)
  • 总结对象相关知识
  • Go语言并发编程之select语句详解
  • 【相机方案(2)】V4L2 支持相机图像直接进入GPU内存吗?DeepStream 确实可以将图像数据高效地放入GPU内存进行处理!
  • 后端开发刷题 | 打家劫舍
  • gin基本使用
  • 30款免费好用的工具,打工人必备!