使用 OpenCV 绘制线条和矩形

发布于:2025-02-11 ⋅ 阅读:(60) ⋅ 点赞:(0)

OpenCV 是一个功能强大的计算机视觉库,它不仅提供了丰富的图像处理功能,还支持图像的绘制。绘制简单的几何图形(如线条和矩形)是 OpenCV 中常见的操作。在本篇文章中,我们将介绍如何使用 OpenCV 在图像上绘制线条和矩形。

绘制线条

在 OpenCV 中,可以使用 cv2.line() 函数来绘制直线。该函数的语法如下:

cv2.line(image, start_point, end_point, color, thickness)
  • image:待绘制的图像。
  • start_point:起点坐标(x, y)。
  • end_point:终点坐标(x, y)。
  • color:线条颜色,格式为 (B, G, R)
  • thickness:线条的粗细,默认为 1。
示例代码:绘制一条红色的线
import cv2
import numpy as np

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

# 定义线条的起点和终点
start_point = (50, 50)
end_point = (450, 450)

# 定义线条颜色(红色)
color = (0, 0, 255)  # BGR格式

# 绘制线条
cv2.line(image, start_point, end_point, color, 5)

# 显示图像
cv2.imshow("Line", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出图像

绘制矩形

OpenCV 提供了 cv2.rectangle() 函数来绘制矩形。该函数的语法如下:

cv2.rectangle(image, start_point, end_point, color, thickness)
  • image:待绘制的图像。
  • start_point:矩形左上角的坐标 (x, y)。
  • end_point:矩形右下角的坐标 (x, y)。
  • color:矩形颜色,格式为 (B, G, R)。
  • thickness:矩形边框的粗细。如果填充矩形,则设置为 -1
示例代码:绘制一个绿色的矩形
import cv2
import numpy as np

# 创建一个白色的图像
image = np.ones((500, 500, 3), dtype=np.uint8) * 255

# 定义矩形的起点和终点
start_point = (100, 100)
end_point = (400, 400)

# 定义矩形颜色(绿色)
color = (0, 255, 0)  # BGR格式

# 绘制矩形
cv2.rectangle(image, start_point, end_point, color, 5)

# 显示图像
cv2.imshow("Rectangle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出图像

填充矩形

如果要绘制一个填充的矩形,只需将 thickness 设置为 -1,OpenCV 会自动将矩形内部填充为指定的颜色。

示例代码:绘制一个填充的蓝色矩形
import cv2
import numpy as np

# 创建一个白色的图像
image = np.ones((500, 500, 3), dtype=np.uint8) * 255

# 定义矩形的起点和终点
start_point = (100, 100)
end_point = (400, 400)

# 定义矩形颜色(蓝色)
color = (255, 0, 0)  # BGR格式

# 绘制填充矩形
cv2.rectangle(image, start_point, end_point, color, -1)

# 显示图像
cv2.imshow("Filled Rectangle", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
输出图像

代码解释

  1. 创建图像:我们使用 numpy.zeros() 创建一个黑色的图像,或者使用 numpy.ones() 创建一个白色的图像。dtype=np.uint8 表示图像数据类型为 8 位无符号整数,这在 OpenCV 中通常用于表示图像像素值(范围 0-255)。
  2. 绘制图形:通过 cv2.line()cv2.rectangle() 函数来绘制线条和矩形。我们定义了起始点和结束点,选择了颜色并指定了线条粗细。
  3. 显示图像cv2.imshow() 函数用于显示图像,cv2.waitKey(0) 等待用户按下任意键后关闭图像窗口,cv2.destroyAllWindows() 关闭所有打开的窗口。

总结

通过 OpenCV 绘制线条和矩形是一个非常简单的操作,可以用来标记图像中的区域、进行图形处理或为图像添加一些基本的标记。无论是使用 cv2.line() 还是 cv2.rectangle(),你都可以轻松自定义图形的颜色、位置和大小,这对于各种图像处理应用非常有用。


网站公告

今日签到

点亮在社区的每一天
去签到