Mahotas - 多边形实用程序
多边形实用程序是一组用于处理多边形的工具。多边形是指由一系列相连的顶点定义的封闭形状。这些实用程序提供执行与多边形相关的各种任务的功能,例如操作、面积计算、点在多边形内的测试等。
在内部,Mahotas 中的多边形实用程序利用计算几何中的算法和技术来实现其功能。这些底层算法确保准确、高效的多边形操作和分析。
总体而言,Mahotas 中的多边形实用程序用作在图像处理任务中使用多边形的工具箱,提供基本功能和算法来有效地操作、分析和执行这些形状的操作。
Mahotas 中的多边形实用程序函数
以下是 mahotas − 中可用的不同多边形实用程序函数
S.No | 功能 &描述 |
---|---|
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 # 计算凸外壳 convex_hull = mh.polygon.convexhull(image) # 打印外壳的值 print(convex_hull) # 显示凸外壳hull mtplt.imshow(convex_hull) mtplt.title('Convex Hull') # 显示图形 mtplt.show()
输出
以下是上述代码的输出 −
[[2 5] [3 6] [4 9]]
得到的图像如下 −

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 # 填充凸包 fill_convexhull = mh.polygon.fill_convexhull(image) # 显示填充的凸包 mtplt.imshow(fill_convexhull) mtplt.title('Filled Convex Hull') # 显示图形 mtplt.show()
输出
执行上述代码后,我们得到以下输出 −

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 # 创建一个全为零的 100x100 图像 canvas = np.zeros((100, 100), dtype=np.uint8) # 将多边形定义为 (y, x) 点列表 polygon = [(0, 0), (50, 0), (50, 50), (0, 50)] # 在画布中填充多边形。 mp.fill_polygon(polygon, canvas, color=255) # 显示图像 plt.imshow(canvas, cmap='gray') plt.show()
输出
我们得到以下图像作为输出 −

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 # 创建一个全为零的 100x100 图像 canvas = np.zeros((100, 100), dtype=np.uint8) # 在画布上画一条线 mp.line((0, 0), (99, 99), canvas, color=255) # 显示图像 mtplt.imshow(canvas) mtplt.show()
输出
以下是上述代码的输出 −
