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

Python中skimage.draw.line()函数的用处和示例

发布时间:2023-12-19 01:25:11

skimage.draw.line()函数是scikit-image库中的一个函数,用于在图像上绘制直线。

这个函数的调用格式如下:

skimage.draw.line(image, start, end, color=None, thickness=1)

参数说明:

- image:要绘制直线的图像(可以是多通道的)

- start:直线的起点坐标,格式为(x1, y1)

- end:直线的终点坐标,格式为(x2, y2)

- color:绘制直线的颜色,默认为None,即黑色

- thickness:直线的宽度,默认为1

使用示例:

import numpy as np
import matplotlib.pyplot as plt
from skimage.draw import line

# 创建一个空白图像
image = np.zeros((300, 300), dtype=np.uint8)

# 定义起点和终点坐标
start = (50, 100)
end = (250, 200)

# 绘制直线
rr, cc = line(start[1], start[0], end[1], end[0])
image[rr, cc] = 255

# 显示图像
plt.imshow(image, cmap='gray')
plt.axis('off')
plt.show()

运行上述代码,将会在一张空白的300x300像素的图像上绘制一条从起点(50, 100)到终点(250, 200)的直线。绘制的结果如下所示:

![绘制直线](https://i.imgur.com/GNIiboG.png)

除了绘制单条直线,skimage.draw.line()函数还可以同时绘制多条直线。只需将起点坐标和终点坐标分别存储为两个数组,然后通过循环遍历这些坐标对即可。

import numpy as np
import matplotlib.pyplot as plt
from skimage.draw import line

# 创建一个空白图像
image = np.zeros((300, 300), dtype=np.uint8)

# 定义起点和终点坐标列表
starts = [(50, 100), (100, 50), (150, 200)]
ends = [(250, 200), (200, 250), (200, 100)]

# 绘制直线
for start, end in zip(starts, ends):
    rr, cc = line(start[1], start[0], end[1], end[0])
    image[rr, cc] = 255

# 显示图像
plt.imshow(image, cmap='gray')
plt.axis('off')
plt.show()

上述代码将使用一个循环绘制三条直线,效果如下图所示:

![绘制直线](https://i.imgur.com/t72UhT0.png)

skimage.draw.line()函数可以在图像处理中用于绘制线条、边界等标记。例如,在目标检测任务中,可以使用该函数在图像上绘制检测到的目标框。