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()
输出图像
代码解释
- 创建图像:我们使用
numpy.zeros()
创建一个黑色的图像,或者使用numpy.ones()
创建一个白色的图像。dtype=np.uint8
表示图像数据类型为 8 位无符号整数,这在 OpenCV 中通常用于表示图像像素值(范围 0-255)。 - 绘制图形:通过
cv2.line()
和cv2.rectangle()
函数来绘制线条和矩形。我们定义了起始点和结束点,选择了颜色并指定了线条粗细。 - 显示图像:
cv2.imshow()
函数用于显示图像,cv2.waitKey(0)
等待用户按下任意键后关闭图像窗口,cv2.destroyAllWindows()
关闭所有打开的窗口。
总结
通过 OpenCV 绘制线条和矩形是一个非常简单的操作,可以用来标记图像中的区域、进行图形处理或为图像添加一些基本的标记。无论是使用 cv2.line()
还是 cv2.rectangle()
,你都可以轻松自定义图形的颜色、位置和大小,这对于各种图像处理应用非常有用。