Mahotas - 多边形工具



多边形工具是一组旨在处理多边形的工具。多边形是指由一系列连接的顶点定义的封闭形状。这些工具提供执行与多边形相关的各种任务的功能,例如操作、面积计算、点在多边形内测试等等。

在内部,Mahotas中的多边形工具利用计算几何中的算法和技术来实现其功能。这些底层算法确保多边形操作和分析的准确性和效率。

总的来说,Mahotas中的多边形工具作为处理图像处理任务中多边形的工具箱,提供必要的函数和算法来高效地操作、分析和执行这些形状的操作。

Mahotas中的多边形工具函数

以下是Mahotas中提供的不同多边形工具函数:

序号 函数及描述
1

convexhull()

此函数创建包含一组点的最小形状,同时保持其凸性(凸包)。

2

fill_convexhull()

此函数填充由一组点生成的凸包的内部。

3

fill_polygon()

此函数填充由一组点定义的多边形的内部。

4

line()

此函数绘制两指定点之间的直线。

现在,让我们简要了解这四个函数并查看它们的示例。

convexhull() 函数

convexhull() 函数生成图像中一组点的凸包。凸包是包含给定点的最小多边形。该函数通过识别多边形的顶点并确保所有内角小于或等于180度来生成凸包。

语法

以下是Mahotas中convexhull()函数的基本语法:

mahotas.polygon.convexhull(bwimg)

其中,

  • bwimg − 输入二值图像。

示例

在下面的示例中,我们使用convexhull()函数获取图像的凸包。

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
image = np.zeros((10, 10), bool)
image[2, 5] = 1
image[3, 6] = 1
image[4, 9] = 1
# Computing convex hull
convex_hull = mh.polygon.convexhull(image)
# Printing the value of the hull
print(convex_hull)
# Displaying the convex hull
mtplt.imshow(convex_hull)
mtplt.title('Convex Hull')
# Showing the figures
mtplt.show()

输出

以下是上述代码的输出:

[[2 5]
 [3 6]
 [4 9]]

获得的图像是:

Polygon Utilities

fill_convexhull() 函数

fill_convexhull() 函数使用图像中一组点生成的颜色填充凸包的内部。该函数确保凸包内的所有像素都被分配特定颜色。

语法

以下是Mahotas中fill_convexhull()函数的基本语法:

mahotas.polygon.fill_convexhull(bwimg)

其中,

  • bwimg − 输入二值图像。

示例

这里,我们使用fill_convexhull()函数用颜色填充凸包。

import mahotas as mh
import numpy as np
import matplotlib.pyplot as mtplt
image = np.zeros((10, 10), bool)
image[2, 5] = 1
image[3, 6] = 1
image[4, 9] = 1
# Filling convex hull
fill_convexhull = mh.polygon.fill_convexhull(image)
# Displaying the filled convex hull
mtplt.imshow(fill_convexhull)
mtplt.title('Filled Convex Hull')
# Showing the figures
mtplt.show()

输出

执行上述代码后,我们得到以下输出:

Polygon Utilities1

fill_polygon() 函数

类似地,fill_polygon()函数用于在图像中用特定颜色填充多边形的内部。它采用表示多边形形状的点,并在多边形边界内执行填充操作。

语法

以下是Mahotas中fill_polygon()函数的基本语法:

mahotas.polygon.fill_polygon([(y0, x0), (y1, x1), ..., ], canvas, color=1)

其中,

  • [(y0, x0), (y1, x1), ..., ] − 这些是定义多边形形状的(y, x)坐标列表。

  • canvas − 将填充多边形的图像。

  • color (可选) − 确定多边形内像素的颜色(默认为1)。

示例

在这个例子中,我们使用fill_polygon()函数用颜色填充一个多边形。

import numpy as np
import matplotlib.pyplot as mtplt
import mahotas.polygon as mp
# Create a 100x100 image with all zeros
canvas = np.zeros((100, 100), dtype=np.uint8)
# Define the polygon as a list of (y, x) points
polygon = [(0, 0), (50, 0), (50, 50), (0, 50)]
# Fill the polygon in the canvas.
mp.fill_polygon(polygon, canvas, color=255)
# Display the image
plt.imshow(canvas, cmap='gray')
plt.show()

输出

我们得到以下输出图像:

Polygon Utilities2

line() 函数

line() 函数用于在图像中绘制两指定点(起点和终点)之间的直线。这些点由它们的x和y坐标表示。x0和y0是起点的坐标,x1和y1是终点的坐标。

语法

以下是Mahotas中line()函数的基本语法:

mahotas.polygon.line((y0, x0), (y1, x1), canvas, color=1)

其中,

  • (y0, x0) − 指定直线起点的元组。

  • (y1, x1) − 指定直线终点的元组。

  • canvas − 将绘制直线的图像。

  • color (可选) − 确定多边形内像素的颜色(默认为1)。

示例

在下面的例子中,我们使用line()函数绘制一条彩色直线。

import numpy as np
import matplotlib.pyplot as mtplt
import mahotas.polygon as mp
# Create a 100x100 image with all zeros
canvas = np.zeros((100, 100), dtype=np.uint8)
# Draw a line in the canvas
mp.line((0, 0), (99, 99), canvas, color=255)
# Display the image
mtplt.imshow(canvas)
mtplt.show()

输出

以下是上述代码的输出:

Polygon Utilities3
广告