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

本文详细介绍了OpenCV库中的六种基本绘图函数:cv2.line()绘制直线,cv2.rectangle()画矩形,cv2.circle()画圆形,cv2.ellipse()画椭圆,cv2.polylines()画多边形,以及cv2.putText()添加文本。每个函数的参数和用法都进行了详细解读和示例演示。
摘要由CSDN通过智能技术生成

cv2.line()函数

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

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

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

参数解释:

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.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()

在这个例子中,我们创建了一个黑色的空白图像,并使用 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]]])

参数解释:

  • 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()

在这个例子中,我们创建了一个黑色的空白图像,并使用 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]]])

参数解释:

  • 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()

在这个例子中,我们创建了一个黑色的空白图像,并使用 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]]])

参数解释:

  • 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()

在这个例子中,我们创建了一个黑色的空白图像,并使用 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]]])

参数解释:

  • 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()

在这个例子中,我们创建了一个黑色的空白图像,并使用 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]]])

参数解释:

  • 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()

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

  • 20
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊猫Devin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值