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

Python图形处理函数完全指南

发布时间:2023-06-17 09:14:29

Python 是一种易于学习和使用的编程语言,非常适合进行图形处理。Python第三方库中的图形处理模块提供了广泛的功能,可以用来创建各种各样的图形和动画。下面是一些关于常用图形处理函数的完全指南,帮助你快速入门成为一名 Python 图形处理专家。

1. PIL/Pillow 库

从 Python 2.0 开始,Python 自带了一个 Image 模块,但功能较少。PIL(Python Imaging Library)是 Python 的一个第三方库,提供了大量的图像处理功能。而 Pillow 是 PIL 的分支版本,提供了更广泛的功能和支持,并在许多方面进行了性能优化。Pillow 安装方法为:pip install Pillow 或者 apt-get install python-imaging。

(1)打开和保存图像

使用 PIL/Pillow 库打开一张图像很简单:

from PIL import Image

im = Image.open("test.png")

这会返回一个 Image 对象,可以对图像进行各种操作。可以保存 Image 对象:

im.save("result.png")

(2)创建缩略图

可以使用 thumbnails() 函数创建缩略图:

size = (128, 128)

im.thumbnail(size)

这里的 size 是一个元组,指定缩略图的大小。PIL/Pillow 自动生成缩略图并将其保存在原始文件或新文件中。

(3)调整图像大小

可以使用 resize() 函数调整图像大小:

size = (300, 300)

im_resized = im.resize(size)

这里的 size 是一个元组,指定新的图像大小。resize() 不会影响原始图像,而是返回一个新的 Image 对象。

(4)转换图像格式

可以使用 convert() 函数将图像转换为不同的格式:

im = Image.open("test.png")

im.save("result.jpg")

2. Matplotlib 库

Matplotlib 是一个用于绘制数据图形的 Python 库。它可以用于制作简单的折线图、散点图、柱状图等,也可以制作比较复杂的图形,例如热力图、轮廓图等。

(1)绘制折线图

要绘制一个简单的折线图,可以使用 plot() 函数:

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]

y = [1, 4, 9, 16]

plt.plot(x, y)

plt.show()

这里的 x 和 y 是两个列表,分别表示横坐标和纵坐标上的值。可以用 xlabel() 和 ylabel() 函数指定标签,用 title() 函数指定标题。

(2)绘制散点图

要绘制一个简单的散点图,可以使用 scatter() 函数:

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]

y = [1, 4, 9, 16]

plt.scatter(x, y)

plt.show()

这里的 x 和 y 分别表示横坐标和纵坐标上的值。可以用 xlabel() 和 ylabel() 函数指定标签,用 title() 函数指定标题。

(3)绘制柱状图

要绘制一个简单的柱状图,可以使用 bar() 函数:

import matplotlib.pyplot as plt

x = ["A", "B", "C", "D"]

y = [10, 20, 5, 15]

plt.bar(x, y)

plt.show()

这里的 x 是一个字符串列表,表示每个柱状图的标签,y 是每个柱状图的高度。

3. OpenCV 库

OpenCV 是一个计算机视觉库,被广泛用于图像和视频处理。它支持 C++、Python 和 Java 等多种编程语言,并且提供了大量的图像处理功能。

(1)读取和显示图像

使用 OpenCV 库读取图像非常简单:

import cv2

image = cv2.imread("test.png")

cv2.imshow("Image", image)

cv2.waitKey(0)

这里的 "test.png" 是你要读取的图像的文件名。imshow() 函数用于显示图像,waitKey(0) 表示等待用户按下任意键以继续运行程序。

(2)缩放和裁剪图像

可以使用 resize() 函数调整图像的大小:

import cv2

image = cv2.imread("test.png")

resized = cv2.resize(image, (800, 600))

cv2.imshow("Resized Image", resized)

cv2.waitKey(0)

这里的 (800, 600) 是一个元组,指定新的图像大小。

可以使用切片操作裁剪图像:

import cv2

image = cv2.imread("test.png")

cropped = image[100:500, 200:600]

cv2.imshow("Cropped Image", cropped)

cv2.waitKey(0)

这里的 [100:500, 200:600] 表示裁剪 [100:500) 行和 [200:600) 列的部分。

(3)滤波图像

可以使用 blur() 函数对图像进行模糊处理:

import cv2

image = cv2.imread("test.png")

blurred = cv2.blur(image, (5, 5))

cv2.imshow("Blurred Image", blurred)

cv2.waitKey(0)

这里的 (5, 5) 是一个元组,指定模糊核的大小。

(4)绘制形状和文字

可以使用 line() 函数绘制直线:

import cv2

image = cv2.imread("test.png")

cv2.line(image, (0, 0), (100, 100), (255, 0, 0), 5)

cv2.imshow("Line", image)

cv2.waitKey(0)

这里的 (0, 0) 和 (100, 100) 分别表示直线的起点和终点,(255, 0, 0) 是直线的颜色,5 是直线的粗细。

可以使用 putText() 函数绘制文字:

import cv2

image = cv2.imread("test.png")

cv2.putText(image, "Hello, World!", (100, 100), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)

cv2.imshow("Text", image)

cv2.waitKey(0)

这里的 (100, 100) 是文字的起点,cv2.FONT_HERSHEY_SIMPLEX 是字体,1 是字体的大小,(0, 255, 0) 是文字的颜色,2 是文字的粗细。

总而言之,Python 图形处理有很多库,也提供了丰富的功能。Python 的简洁、易学、开放性,和解释型语言的特点,极大地方便了新手学习编程,且 Python 代码具遗传性和可读性好,可跨平台运行,易于进行图像处理,因此 Python 在图形处理领域有着广泛的应用和较好的前景。