当前位置:   article > 正文

opencv-python库 cv2 图形绘制 cv2.line()cv2.rectangle()cv2.circle()cv2.ellipse()cv2.polylines()cv2.putText

opencv-python库 cv2 图形绘制 cv2.line()cv2.rectangle()cv2.circle()cv2.ellipse()cv2.polylines()cv2.putText

cv2.line()函数

cv2.line() 是 OpenCV 中的一个函数,用于在图像上绘制直线。这个函数需要指定图像、线的起点和终点坐标、线的颜色、线的宽度以及线的类型。

下面是 cv2.line() 函数的详细参数说明:

cv2.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]])
  • 1

参数解释:

img: 要在其上绘制直线的图像,应该是一个 NumPy 数组。
pt1: 直线的第一个点,坐标以元组形式给出,例如 (x1, y1)。
pt2: 直线的第二个点,坐标以元组形式给出,例如 (x2, y2)。
color: 直线的颜色,对于 BGR,我们传递一个元组,例如对于蓝色,传递 (255, 0, 0)。
thickness: 直线的宽度。如果是负数(通常是 -1),则线将被填充,形成一个矩形。
lineType: 线的类型,可以是 8 连接、4 连接等。默认值是 cv2.LINE_8。
shift: 坐标点中的小数位数。默认情况下,坐标是整数。如果传递一个非零值,例如 2,那么坐标将被缩放。例如,点 (10.5, 20.5) 在 shift=1 时将被转换为 (105, 205)。
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

下面是一个使用 cv2.line() 绘制直线的简单示例:

import cv2
import numpy as np

# 创建一个黑色的空白图像
image = np.zeros((512, 512, 3), dtype="uint8")

# 在图像上绘制一条从左上角到右下角的红色直线,宽度为 5
cv2.line(image, (0, 0), (511, 511), (0, 0, 255), 5)

# 显示图像
cv2.imshow("Line", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这个例子中,我们创建了一个黑色的空白图像,并使用 cv2.line() 在上面绘制了一条红色的直线,从左上角 (0, 0) 到右下角 (511, 511),直线的宽度设置为 5 像素。最后,我们使用 cv2.imshow() 显示图像,并使用 cv2.waitKey() 和 cv2.destroyAllWindows() 来处理键盘输入和关闭窗口。

cv2.rectangle()函数

在OpenCV中,cv2.rectangle() 函数用于在图像上绘制矩形。该函数需要指定图像、矩形的左上角和右下角坐标、矩形的颜色、线条宽度以及线条类型。

下面是 cv2.rectangle() 函数的详细参数说明:

cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]])
  • 1

参数解释:

  • img: 要在其上绘制矩形的图像,应该是一个 NumPy 数组。
  • pt1: 矩形的顶点之一,通常是左上角的坐标,坐标以元组形式给出,例如 (x1, y1)。
  • pt2: 矩形的另一个顶点,通常是右下角的坐标,坐标以元组形式给出,例如 (x2, y2)。
  • color: 矩形的颜色,对于 BGR,我们传递一个元组,例如对于蓝色,传递 (255, 0, 0)。
  • thickness: 矩形边框的厚度。如果传递负数(例如 -1),则矩形将被填充。
  • lineType: 线的类型,可以是 8 连接、4 连接等。默认值是 cv2.LINE_8。
  • shift: 坐标点中的小数位数。默认情况下,坐标是整数。如果传递一个非零值,例如 2,那么坐标将被缩放。例如,点 (10.5, 20.5) 在 shift=1 时将被转换为 (105, 205)。

下面是一个使用 cv2.rectangle() 绘制矩形的简单示例:

import cv2
import numpy as np

# 创建一个黑色的空白图像
image = np.zeros((512, 512, 3), dtype="uint8")

# 在图像上绘制一个红色的矩形,左上角坐标 (30, 30),右下角坐标 (300, 300),线条宽度为 2
cv2.rectangle(image, (30, 30), (300, 300), (0, 0, 255), 2)

# 显示图像
cv2.imshow("Rectangle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这个例子中,我们创建了一个黑色的空白图像,并使用 cv2.rectangle() 在上面绘制了一个红色的矩形。矩形的左上角坐标是 (30, 30),右下角坐标是 (300, 300),线条宽度设置为 2 像素。最后,我们使用 cv2.imshow() 显示图像,并使用 cv2.waitKey() 和 cv2.destroyAllWindows() 来处理键盘输入和关闭窗口。

cv2.circle()函数

在OpenCV中,cv2.circle() 函数用于在图像上绘制圆。这个函数需要指定图像、圆心的坐标、半径、圆的颜色、线条宽度以及线条类型。

下面是 cv2.circle() 函数的详细参数说明:

cv2.circle(img, center, radius, color[, thickness[, lineType[, shift]]])
  • 1

参数解释:

  • img: 要在其上绘制圆的图像,应该是一个 NumPy 数组。
  • center: 圆的中心点坐标,以元组形式给出,例如 (x, y)。
  • radius: 圆的半径,表示从圆心到圆上任意一点的距离。
  • color: 圆的颜色,对于 BGR,我们传递一个元组,例如对于蓝色,传递 (255, 0, 0)。
  • thickness: 圆的线条宽度。如果传递 -1,则圆将被填充。
  • lineType: 线的类型,可以是 8 连接、4 连接等。默认值是 cv2.LINE_8。
  • shift: 坐标点中的小数位数。默认情况下,坐标是整数。如果传递一个非零值,例如 2,那么坐标将被缩放。例如,点 (10.5, 20.5) 在 shift=1 时将被转换为 (105, 205)。

下面是一个使用 cv2.circle() 绘制圆的简单示例:

import cv2
import numpy as np

# 创建一个黑色的空白图像
image = np.zeros((512, 512, 3), dtype="uint8")

# 在图像上绘制一个红色的圆,圆心在 (256, 256),半径为 100,线条宽度为 2
cv2.circle(image, (256, 256), 100, (0, 0, 255), 2)

# 显示图像
cv2.imshow("Circle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这个例子中,我们创建了一个黑色的空白图像,并使用 cv2.circle() 在上面绘制了一个红色的圆。圆心的坐标是 (256, 256),半径是 100 像素,线条宽度设置为 2 像素。最后,我们使用 cv2.imshow() 显示图像,并使用 cv2.waitKey() 和 cv2.destroyAllWindows() 来处理键盘输入和关闭窗口。

cv2.ellipse()函数

在OpenCV中,cv2.ellipse() 函数用于在图像上绘制椭圆。这个函数需要指定图像、椭圆的中心点、椭圆的长半轴和短半轴、旋转角度、椭圆的开始角度和结束角度(以度为单位)、椭圆的颜色、线条宽度以及线条类型。

下面是 cv2.ellipse() 函数的详细参数说明:

cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]])
  • 1

参数解释:

  • img: 要在其上绘制椭圆的图像,应该是一个 NumPy 数组。
  • center: 椭圆的中心点坐标,以元组形式给出,例如 (x, y)。
  • axes: 一个元组,表示椭圆的长半轴和短半轴的长度,例如 (a, b)。
  • angle: 椭圆旋转的角度,以度为单位,逆时针方向为正。
  • startAngle 和 endAngle: 椭圆的起始和结束角度,以度为单位,用于绘制椭圆弧。
  • color: 椭圆的颜色,对于 BGR,我们传递一个元组,例如对于蓝色,传递 (255, 0, 0)。
  • thickness: 椭圆的线条宽度。如果传递 -1,则椭圆将被填充。
  • lineType: 线的类型,可以是 8 连接、4 连接等。默认值是 cv2.LINE_8。
  • shift: 坐标点中的小数位数。默认情况下,坐标是整数。

下面是一个使用 cv2.ellipse() 绘制椭圆的简单示例:

import cv2
import numpy as np

# 创建一个黑色的空白图像
image = np.zeros((512, 512, 3), dtype="uint8")

# 在图像上绘制一个红色的椭圆,中心点 (256, 256),长半轴 100,短半轴 50,旋转 0 度
cv2.ellipse(image, (256, 256), (100, 50), 0, 0, 360, (0, 0, 255), -1)

# 显示图像
cv2.imshow("Ellipse", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这个例子中,我们创建了一个黑色的空白图像,并使用 cv2.ellipse() 在上面绘制了一个红色的椭圆。椭圆的中心点是 (256, 256),长半轴是 100 像素,短半轴是 50 像素,椭圆没有旋转(即 angle=0),绘制完整的椭圆(startAngle=0 和 endAngle=360)。最后,我们使用 cv2.imshow() 显示图像,并使用 cv2.waitKey() 和 cv2.destroyAllWindows() 来处理键盘输入和关闭窗口。

cv2.polylines()函数

在OpenCV中,cv2.polylines() 函数用于在图像上绘制多条线段。这些线段可以是由一系列的点连接而成的多边形线条。

以下是 cv2.polylines() 函数的详细参数说明:

cv2.polylines(img, pts, isClosed, color[, thickness[, lineType[, shift]]])
  • 1

参数解释:

  • img: 要在其上绘制线段的图像,应该是一个 NumPy 数组。
  • pts: 一个包含多个点坐标的列表或数组,其中每个点由 (x, y) 坐标表示。这些点将按顺序连接以形成线段。
  • isClosed: 一个布尔值,指示线段是否应该闭合。如果为 True,则最后一个点和第一个点将被连接,形成一个闭合的多边形。
  • color: 线段的颜色,对于 BGR,传递一个元组,例如对于蓝色,传递 (255, 0, 0)。
  • thickness: 线段的宽度。如果为负数(例如 -1),则线段将被填充。
  • lineType: 线的类型,可以是 8 连接、4 连接等。默认值是 cv2.LINE_8。
  • shift: 坐标点中的小数位数。默认情况下,坐标是整数。如果传递一个非零值,例如 2,那么坐标将被缩放。

下面是一个使用 cv2.polylines() 绘制多边形的简单示例:

import cv2
import numpy as np

# 创建一个黑色的空白图像
image = np.zeros((512, 512, 3), dtype="uint8")

# 定义多边形的顶点
pts = np.array([[10, 50], [200, 50], [100, 300], [10, 50]], np.int32)

# 在图像上绘制多边形线段,不闭合
cv2.polylines(image, [pts], False, (0, 255, 0), 3)

# 显示图像
cv2.imshow("Polygon", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

在这个例子中,我们创建了一个黑色的空白图像,并使用 cv2.polylines() 在上面绘制了一个绿色的多边形。多边形的顶点坐标存储在 pts 数组中,并通过一个列表传递给 cv2.polylines() 函数。isClosed 参数设置为 False,表示我们不希望线段闭合。线段的宽度设置为 3 像素,颜色为绿色。

请注意,即使 isClosed 设置为 False,由于 pts 数组中的最后一个点和第一个点相同,所以绘制的线段仍然会闭合。如果你不希望线段闭合,确保 pts 数组中的最后一个点和第一个点不相同。

cv2.putText()函数

在OpenCV中,cv2.putText() 函数用于在图像上绘制文本。这个函数在图像上添加文本标注,可以指定文本内容、字体、字号、颜色、线条粗细、线条类型、坐标位置等。

下面是 cv2.putText() 函数的详细参数说明:

cv2.putText(img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])
  • 1

参数解释:

  • img: 要在其上绘制文本的图像,应该是一个 NumPy 数组。
  • text: 要绘制的文本字符串。
  • org: 文本字符串的起始坐标点,以元组形式给出,例如 (x, y)。该点通常是文本字符串的左下角或基线的起点,这取决于 bottomLeftOrigin 参数。
  • fontFace: 字体类型,例如 cv2.FONT_HERSHEY_SIMPLEX、cv2.FONT_HERSHEY_PLAIN 等。OpenCV 提供了几种不同的字体供选择。
  • fontScale: 字体缩放因子,用于控制文本大小。增加这个值将使得文本更大。
  • color: 文本的颜色,对于 BGR,传递一个元组,例如对于白色,传递 (255, 255, 255)。
  • thickness: 文本的线条宽度。如果传递 -1,则文本将被填充。
  • lineType: 线的类型,可以是 8 连接、4 连接等。默认值是 cv2.LINE_8。
  • bottomLeftOrigin: 这是一个布尔值,当为 True 时,文本的起始坐标点是文本字符串的左下角;当为 False 时,起始坐标点是文本字符串的基线起点。默认情况下,这个值是 False。

下面是一个使用 cv2.putText() 绘制文本的简单示例:

import cv2
import numpy as np

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

# 在图像上绘制文本
text = "Hello, OpenCV!"
org = (50, 50)
fontFace = cv2.FONT_HERSHEY_SIMPLEX
fontScale = 1
color = (255, 255, 255)
thickness = 2

cv2.putText(image, text, org, fontFace, fontScale, color, thickness)

# 显示图像
cv2.imshow("Text", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

在这个例子中,我们创建了一个黑色的空白图像,并使用 cv2.putText() 在上面绘制了白色的文本 “Hello, OpenCV!”。文本的起始坐标是 (50, 50),字体类型是 cv2.FONT_HERSHEY_SIMPLEX,字体缩放因子是 1,线条宽度是 2。最后,我们使用 cv2.imshow() 显示图像,并使用 cv2.waitKey() 和 cv2.destroyAllWindows() 来处理键盘输入和关闭窗口。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/362237
推荐阅读
相关标签
  

闽ICP备14008679号