如何在Python中使用OpenCV在图像上绘制折线?

如何在Python中使用OpenCV在图像上绘制折线?

要在图像上绘制折线,我们使用方法 cv2.polylines() 。我们可以在图像上绘制开放或关闭的折线。在绘制开放折线时,第一个和最后一个点不连接。

语法

cv2.polylines() 的语法如下所示 −

cv2.polylines(src, [pts], isClosed, color, thickness)

参数

  • src − 它是要在其上绘制折线的输入图像。

  • pts − 点数组的列表。

  • isClosed − 将isClosed=True设置为绘制闭合折线,对于开放折线设置isClosed=False。

  • color − 它是线的颜色。

  • thickness − 它是线的粗细。默认粗细度为 thickness=1

步骤

您可以使用以下步骤在图像上绘制折线 −

导入所需的库。在以下所有Python示例中,所需的Python库为 OpenCVNumPy 。请确保您已经安装了它们。

import cv2
import numpy as np

使用cv2.imread()方法读取输入图像。

img = cv2.imread('nature_waterfall.jpg')

定义一组二维点数组并重塑它。

points = np.array([[155,320],[250,420],[345,50]])
pts = points.reshape(-1,1,2) # 现在的形状为[3,1,2]

在图像上绘制折线,传递参数 isClosed、color、 thickness的期望值。要绘制闭合折线,请传递 isClosed=True ,对于开放折线,请设置 isClosed=False

cv2.polylines(img, [pts1], isClosed=True, color=(255,0,0), thickness=2)

显示具有所绘制折线的图像。

cv2.imshow("Polylines", img_poly)
cv2.waitKey(0)
cv2.destroyAllWindows()

我们将在以下示例中使用此图像作为 输入文件

如何在Python中使用OpenCV在图像上绘制折线?

示例1

在下面的Python程序中,我们已在输入图像上绘制了蓝色封闭折线。

# 导入所需的库
import cv2
import numpy as np

# 载入输入图像
img = cv2.imread('nature_waterfall.jpg')

# 在图像上定义一个三个点的数组以绘制折线
# 点数组的形状是[3,2]
points = np.array([[155,320],[250,420],[345,50]])

# 重塑点数组使其成为3D
pts = points.reshape(-1,1,2) # 现在的形状是[3,1,2]

# 绘制折线在图像中,传递所需的参数值
img_poly = cv2.polylines(img, [pts], isClosed=True, color=(255,0,0), thickness = 2)

# 在图像上显示绘制折线并关闭窗口
cv2.imshow("Polylines", img_poly)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出

当您执行上面的程序时,它将产生以下 输出 窗口。

如何在Python中使用OpenCV在图像上绘制折线?

注意,图像上绘制的折线是闭合的。我们可以绘制一条不闭合的折线。在第二个示例中,我们看一下在图像上绘制两种线条的情况。

示例2

在下面的Python程序中,我们在输入图像上绘制了三条折线。第一条和第三条折线是闭合的,而第二条折线不是闭合的。

import cv2
import numpy as np
# 读取输入图像
img = cv2.imread('nature_waterfall.jpg')

# 定义点的数组
points1 = np.array([[455,200],[155,420],[145,350]])
points2 = np.array([[200,120],[200,320],[405,350], [600,30]])
points3 = np.array([[100,20],[320,20],[45,350], [100,150]])

# 重塑点
pts1 = points1.reshape(-1,1,2)
pts2 = points2.reshape(-1,1,2)
pts3 = points3.reshape(-1,1,2)

# 画出多边形线条
cv2.polylines(img, [pts1], isClosed=True, color=(255,0,0), thickness = 2)
cv2.polylines(img, [pts2], isClosed=False, color=(0,255,0), thickness = 2)
cv2.polylines(img, [pts3], isClosed=True, color=(0,0,255), thickness = 2)

# 显示带有绘制多边形线条的图像
cv2.imshow("Polylines", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果

当执行以上程序时,它将产生以下窗口输出。

如何在Python中使用OpenCV在图像上绘制折线?

请注意,绿色的多边形线条是开的,而红色和蓝色的多边形线条是闭合的。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python OpenCV