如何使用Python在图片上绘制几何形状

1. Python中绘制几何形状的原理

在Python中,我们可以使用Pillow库来处理图片,Pillow是Python中的一个图像处理库,可以对图片进行各种处理,包括图片的读写、剪裁、旋转、缩放等等。同时,我们也可以使用Python中的Matplotlib库来绘制几何形状,包括直线、矩形、圆形、椭圆形等等,然后将绘制好的图形与图像进行融合,以达到在图片上绘制几何形状的效果。

2. 绘制直线

绘制直线非常简单,我们只需要调用Matplotlib库中的plot函数即可。该函数需要传入两个数组作为参数,分别表示直线的x坐标和y坐标。例如,我们需要在图片上从坐标(100, 100)绘制到坐标(300, 300)的直线,代码如下:

import numpy as np

import matplotlib.pyplot as plt

# 构造xy坐标数组

x = np.array([100, 300])

y = np.array([100, 300])

# 绘制直线

plt.plot(x, y)

# 显示图片

plt.show()

以上代码可以实现在图片上绘制一条从坐标(100, 100)到坐标(300, 300)的直线。如果想要绘制更多的直线,只需要多传入几组坐标就可以了。

2.1 绘制不同颜色的直线

有时候我们需要在一张图片中绘制多条直线,并且每条直线的颜色可能不同。这时候,我们可以在plot函数中传入color参数,该参数表示直线的颜色。例如,我们需要绘制两条直线,一条为红色,一条为蓝色,代码如下:

import numpy as np

import matplotlib.pyplot as plt

# 构造xy坐标数组

x1 = np.array([100, 300])

y1 = np.array([100, 300])

x2 = np.array([100, 300])

y2 = np.array([300, 100])

# 绘制直线

plt.plot(x1, y1, color='r')

plt.plot(x2, y2, color='b')

# 显示图片

plt.show()

以上代码可以实现在图片上绘制一条从坐标(100, 100)到坐标(300, 300)的红色直线和一条从坐标(100, 300)到坐标(300, 100)的蓝色直线。如果想要绘制更多的不同颜色的直线,只需要在plot函数中传入相应的颜色参数即可。

2.2 绘制虚线

在有些情况下,我们需要在图片中绘制虚线,而不是实线。这时候,我们可以在plot函数中传入linestyle参数,该参数表示直线的样式,'-'表示实线,'--'表示虚线。例如,我们需要在图片上绘制一条红色虚线,代码如下:

import numpy as np

import matplotlib.pyplot as plt

# 构造xy坐标数组

x = np.array([100, 300])

y = np.array([100, 300])

# 绘制直线

plt.plot(x, y, color='r', linestyle='--')

# 显示图片

plt.show()

以上代码可以实现在图片上绘制一条从坐标(100, 100)到坐标(300, 300)的红色虚线。如果想要绘制更多的虚线,只需要在plot函数中传入相应的linestyle参数即可。

3. 绘制矩形

绘制矩形同样很简单,我们只需要使用Matplotlib库中的Rectangle类即可。该类需要传入一个元组作为参数,元组中的四个值分别表示矩形左上角的x、y坐标和矩形宽度、高度。例如,我们需要在图片上绘制一个左上角坐标为(100, 100),宽度为200,高度为150的蓝色矩形,代码如下:

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.patches import Rectangle

# 创建矩形对象

rect = Rectangle((100, 100), 200, 150, linewidth=1, edgecolor='b', facecolor='none')

# 获取当前图形并添加矩形

fig, ax = plt.subplots()

ax.add_patch(rect)

# 显示图片

plt.show()

以上代码可以实现在图片上绘制一个左上角坐标为(100, 100),宽度为200,高度为150的蓝色矩形。如果想要绘制更多的矩形,只需要创建相应的Rectangle对象并添加到当前图形中即可。

3.1 绘制填充矩形

有时候我们需要绘制填充矩形,而不是只绘制边框。这时候,我们只需要在Rectangle对象中传入facecolor参数,该参数表示矩形的填充颜色。例如,我们需要在图片上绘制一个左上角坐标为(100, 100),宽度为200,高度为150的红色填充矩形,代码如下:

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.patches import Rectangle

# 创建矩形对象

rect = Rectangle((100, 100), 200, 150, linewidth=1, edgecolor='r', facecolor='r')

# 获取当前图形并添加矩形

fig, ax = plt.subplots()

ax.add_patch(rect)

# 显示图片

plt.show()

以上代码可以实现在图片上绘制一个左上角坐标为(100, 100),宽度为200,高度为150的红色填充矩形。如果想要绘制更多的填充矩形,只需要创建相应的Rectangle对象并设置相应的填充颜色即可。

4. 绘制圆形

绘制圆形同样也很简单,我们只需要使用Matplotlib库中的Circle类即可。该类需要传入一个元组作为参数,元组中的两个值分别表示圆心的x、y坐标,还需要一个半径参数。例如,我们需要在图片上绘制一个圆心坐标为(200, 200),半径为50的绿色圆形,代码如下:

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.patches import Circle

# 创建圆形对象

circ = Circle((200, 200), 50, linewidth=1, edgecolor='g', facecolor='none')

# 获取当前图形并添加圆形

fig, ax = plt.subplots()

ax.add_patch(circ)

# 显示图片

plt.show()

以上代码可以实现在图片上绘制一个圆心坐标为(200, 200),半径为50的绿色圆形。如果想要绘制更多的圆形,只需要创建相应的Circle对象并添加到当前图形中即可。

4.1 绘制填充圆形

有时候我们需要绘制填充圆形,而不是只绘制边框。这时候,我们只需要在Circle对象中传入facecolor参数,该参数表示圆形的填充颜色。例如,我们需要在图片上绘制一个圆心坐标为(200, 200),半径为50的红色填充圆形,代码如下:

import numpy as np

import matplotlib.pyplot as plt

from matplotlib.patches import Circle

# 创建圆形对象

circ = Circle((200, 200), 50, linewidth=1, edgecolor='r', facecolor='r')

# 获取当前图形并添加圆形

fig, ax = plt.subplots()

ax.add_patch(circ)

# 显示图片

plt.show()

以上代码可以实现在图片上绘制一个圆心坐标为(200, 200),半径为50的红色填充圆形。如果想要绘制更多的填充圆形,只需要创建相应的Circle对象并设置相应的填充颜色即可。

5. 总结

通过本文的介绍,我们可以发现Python中绘制几何形状非常简单,只需要使用Matplotlib库中的相关类和函数即可,同时也可以通过Pillow库加载图片并在其上绘制几何形状。熟练掌握这些技巧能够让我们在处理图像时更加灵活,达到更好的效果。

后端开发标签