如何在Python中使用OpenCV在图像上绘制折线?
前言
OpenCV是一个可以用于机器视觉和图像处理的开源库,它提供了很多常用的功能,例如图像处理、图像分析和计算机视觉等。其中,绘制折线是一项常见的操作,本文将介绍如何在Python中使用OpenCV进行折线的绘制。
环境准备
在本文中,我们将使用Python 3.x和OpenCV 4.x版本。如果您的电脑没有安装Python或OpenCV,请先进行安装。
在Python中,我们需要使用OpenCV库(cv2模块)来进行图像的处理及绘制操作。我们来安装OpenCV库并导入cv2模块:
pip install opencv-python
import cv2
读取图像
在本文中,我们将使用一张名叫“example.jpg”的测试图像进行演示。首先,我们需要读取这张图像,并将其赋值给一个变量。我们可以使用cv2.imread()函数来读取图像:
img = cv2.imread("example.jpg")
绘制折线
绘制折线的函数是cv2.polylines()。该函数可以同时绘制多条折线。它的语法如下:
cv2.polylines(image, pts, isClosed, color, thickness)
参数说明如下:
- image:要绘制折线的图像。
- pts:折线的顶点坐标,每条折线的顶点坐标放在一个list中;多条折线的顶点坐标再放在一个大的list中。
- isClosed:是否闭合折线。True表示闭合,False表示不闭合。
- color:折线的颜色。
- thickness:折线的宽度。
举个例子:
import numpy as np
# 顶点坐标
pts = np.array([[100, 50], [200, 50], [200, 150], [100, 150]], np.int32)
# 在白色图像上绘制红色折线
img = np.zeros((300, 300, 3), dtype=np.uint8) + 255
cv2.polylines(img, [pts], True, (0, 0, 255), 3)
# 显示图像
cv2.imshow("example", img)
cv2.waitKey(0)
运行上述代码后,会弹出一个窗口,并在窗口中显示一张红色折线的图像。
说明:
- 首先,我们使用numpy库构造一张白色的图像。
- 然后,我们定义了多个点的顶点坐标作为pts。
- 接着,我们使用cv2.polylines()函数在图像上绘制红色的折线。
- 最后,我们使用cv2.imshow()函数来显示图像。
在图像上绘制多条折线
使用cv2.polylines()函数绘制多条折线的方法很简单。只需将多条折线的顶点坐标分别放在一个list中,再将多个list再放在一个大的list中,作为pts的值即可。
举个例子:
import numpy as np
# 多条折线的顶点坐标
pts1 = np.array([[100, 50], [200, 50], [200, 100], [100, 100]], np.int32)
pts2 = np.array([[200, 100], [250, 100], [250, 150], [200, 150]], np.int32)
pts3 = np.array([[100, 150], [200, 150], [200, 200], [100, 200]], np.int32)
# 在白色图像上绘制彩色折线
img = np.zeros((300, 300, 3), dtype=np.uint8) + 255
cv2.polylines(img, [pts1, pts2, pts3], True, (0, 0, 255), 3)
cv2.polylines(img, [pts2], True, (0, 255, 0), 3)
cv2.polylines(img, [pts3], True, (255, 0, 0), 3)
# 显示图像
cv2.imshow("example", img)
cv2.waitKey(0)
运行上述代码后,会弹出一个窗口,并在窗口中显示多条彩色折线的图像。
说明:
- 首先,我们使用numpy库构造一张白色的图像。
- 然后,我们定义了多个点的顶点坐标作为pts1、pts2、pts3。
- 接着,我们使用cv2.polylines()函数在图像上绘制多条彩色折线。
- 最后,我们使用cv2.imshow()函数来显示图像。
在图像上绘制虚线
使用cv2.polylines()函数绘制虚线的方法也很简单。只需在thickness参数中加上cv2.LINE_AA即可。
举个例子:
import numpy as np
# 顶点坐标
pts = np.array([[100, 50], [200, 50], [200, 150], [100, 150]], np.int32)
# 在白色图像上绘制虚线
img = np.zeros((300, 300, 3), dtype=np.uint8) + 255
cv2.polylines(img, [pts], True, (0, 0, 255), 3, cv2.LINE_AA)
# 显示图像
cv2.imshow("example", img)
cv2.waitKey(0)
运行上述代码后,会弹出一个窗口,并在窗口中显示一张红色虚线的图像。
说明:
- 首先,我们使用numpy库构造一张白色的图像。
- 然后,我们定义了多个点的顶点坐标作为pts。
- 接着,我们使用cv2.polylines()函数在图像上绘制红色的虚线。
- 在thickness参数中加上cv2.LINE_AA即可让折线变为虚线。
- 最后,我们使用cv2.imshow()函数来显示图像。
结论
本文介绍了如何在Python中使用OpenCV在图像上绘制折线。我们使用cv2.polylines()函数绘制了单条折线、多条折线和虚线。通过本文的学习,您可以掌握OpenCV绘制折线的基本方法,为后续的机器视觉和图像处理工作打下基础。