欢迎访问宙启技术站
智能推送

Python中如何操作和处理图像?

发布时间:2023-06-16 11:18:33

在 Python 中,有许多库可以用于图像处理和操作。其中最常见和最流行的是Pillow,OpenCV和Scikit-image。在本文中,我们将介绍如何使用这些库来操作和处理图像。

1. Pillow

Pillow是Python Imaging Library的一个分支,它是一个广泛使用的Python图像库。Pillow可以用于读取、显示、保存图像,以及基本的图像处理,如调整大小、旋转、裁剪、镜像、过滤等。以下是使用Pillow处理图像的基本例子:

读取图像:

from PIL import Image

image = Image.open('image.png')

显示图像:

image.show()

保存图像:

image.save('new_image.png')

调整大小:

resized_image = image.resize((200, 200))

旋转:

rotated_image = image.rotate(45)

裁剪:

cropped_image = image.crop((100, 100, 300, 300))

排除:

flipped_image = image.transpose(Image.FLIP_LEFT_RIGHT)

过滤:

from PIL import ImageFilter

blurred_image = image.filter(ImageFilter.BLUR)

2. OpenCV

OpenCV是一个广泛使用的计算机视觉库,也可以用于图像处理。它支持许多图像处理技术,如图像滤波、形态学转换、特征检测和匹配、目标识别和跟踪等。以下是使用OpenCV处理图像的基本例子:

读取图像:

import cv2

image = cv2.imread('image.png')

显示图像:

cv2.imshow('Image', image)

cv2.waitKey(0)

cv2.destroyAllWindows()

保存图像:

cv2.imwrite('new_image.png', image)

调整大小:

resized_image = cv2.resize(image, (200, 200))

旋转:

(h, w) = image.shape[:2]

center = (w // 2, h // 2)

M = cv2.getRotationMatrix2D(center, 45, 1.0)

rotated_image = cv2.warpAffine(image, M, (w, h))

裁剪:

cropped_image = image[100:300, 100:300]

滤波:

blurred_image = cv2.GaussianBlur(image, (11, 11), 0)

3. Scikit-image

Scikit-image是一个用于图像处理和计算机视觉的Python库。它支持许多图像处理技术,如滤波、形态学、二值化、边缘检测、特征检测和匹配等。以下是使用Scikit-image处理图像的基本例子:

读取图像:

from skimage import io

image = io.imread('image.png')

显示图像:

io.imshow(image)

io.show()

保存图像:

io.imsave('new_image.png', image)

调整大小:

import skimage.transform

resized_image = skimage.transform.resize(image, (200, 200))

旋转:

import skimage.transform

rotated_image = skimage.transform.rotate(image, 45)

裁剪:

cropped_image = image[100:300, 100:300]

滤波:

import skimage.filters

blurred_image = skimage.filters.gaussian(image, sigma=3)

总结

Python可以使用Pillow、OpenCV和Scikit-image等库处理和操作图像。这些库支持各种图像处理技术,包括调整大小、旋转、裁剪、镜像、过滤、形态学转换、边缘检测、特征检测和匹配等。选择哪个库取决于应用程序的需求和技术要求。