Python图像库读写总结:opencv、PIL、matplotlib.image、scipy.misc、skimage

0 下载量 199 浏览量 更新于2024-09-04 收藏 639KB PDF 举报
"这篇文章主要汇总了Python中几个常用的图像库,包括opencv、PIL(pillow)、matplotlib.image、scipy.misc以及skimage的图片读写方法,并提到了每个库的特点和注意事项。" 在Python的图像处理领域,选择合适的库至关重要。以下是各个库的基本使用方法和特性: 1. OpenCV (cv2.imread) OpenCV 是一个功能非常强大的图像处理库,不仅适用于图像读取,还支持复杂的图像处理和计算机视觉任务。使用 `cv2.imread()` 函数可以读取图片,参数可以设置为 `cv2.IMREAD_COLOR`(默认,读取彩色图像)、`cv2.IMREAD_GRAYSCALE`(读取灰度图像)或 `cv2.IMREAD_UNCHANGED`(保留Alpha通道)。读取的图像会转换成numpy数组,彩色图像的维度为 `(高度, 宽度, 通道数)`,数据类型通常为 `uint8`。 ```python import cv2 import numpy as np img = cv2.imread('1.jpg') cv2.imshow('src', img) print(img.shape) # (h, w, c) print(img.size) # 像素总数 print(img.dtype) # uint8 cv2.waitKey() ``` 2. PIL (Pillow) PIL(Python Imaging Library)是Python中处理图像的基础库,它的升级版Pillow更易于使用。PIL提供了 `Image` 类来读取和写入图片。图像可以被转换为灰度或彩色,但默认情况下读取的是彩色图像。 ```python from PIL import Image img = Image.open('1.jpg') print(img.size) # (w, h) print(img.mode) # RGB 或 L (灰度) ``` 3. Matplotlib.image Matplotlib 主要用于数据可视化,其 `image` 模块也能读取图像,但通常用于绘图目的。使用 `imread()` 函数读取图片。 ```python import matplotlib.pyplot as plt import matplotlib.image as mpimg img = mpimg.imread('1.jpg') plt.imshow(img) plt.show() ``` 4. Scipy.misc Scipy 提供了 `misc` 模块,其中的 `imread()` 可以读取图片,但需要注意的是,此模块在新版本的Scipy中已被废弃。 ```python from scipy import misc img = misc.imread('1.jpg') print(img.shape) # (h, w, c) ``` 5. Skimage Scikit-image 是一个用于图像处理的库,提供 `io.imread()` 来读取图像,支持多种图像格式。 ```python from skimage import io img = io.imread('1.jpg') print(img.shape) # (h, w, c) ``` 在选择图像库时,应根据具体需求来决定。例如,如果需要进行复杂的图像处理和计算机视觉任务,OpenCV可能是最佳选择;而如果只是简单的图像查看和调整,PIL或Matplotlib可能更合适。理解每个库的特性和使用方法,将有助于编写更高效、更符合需求的代码。在实际应用中,了解这些库之间的差异和转换方法,可以避免在处理图像时遇到不必要的问题。