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

如何在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绘制折线的基本方法,为后续的机器视觉和图像处理工作打下基础。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

Python OpenCV