在 OpenCV 中,cv2.rectangle() 函数是我们在图像上绘制矩形的强大工具。通过指定起始和结束坐标、颜色以及线条粗细,我们不仅可以高亮显示图像中的特定区域,还能为图像处理任务(如标注、目标检测和可视化)提供极大的便利。接下来,让我们深入了解这个函数的语法和用法。
语法
> cv2.rectangle(image, startpoint, endpoint, color, thickness)
参数说明:
- image: 要在其上绘制矩形的输入图像。
- start_point: 矩形左上角坐标的元组 (x, y)。
- end_point: 矩形右下角坐标的元组 (x, y)。
- color: 矩形边框的颜色,使用 BGR 格式(例如 (255, 0, 0) 表示蓝色)。
- thickness: 矩形边框的粗细(像素单位)。如果设置为 -1,则用颜色填充整个矩形。
返回值: 返回绘制了矩形的图像。
关键要点
在使用该函数时,有几点需要我们特别留意:
- 坐标值应在图像尺寸范围内,以避免报错。
- 将 thickness 设置为 -1 会填充矩形,使其变成实心色块。
- 颜色应按 BGR(蓝-绿-红)顺序指定,这是 OpenCV 的默认设置,而非常见的 RGB。
示例代码
为了演示接下来的示例,我们将使用下面的图片作为测试素材:
示例 1:绘制蓝色矩形边框
让我们看一段代码,它读取图像并在上面绘制一个蓝色的矩形,最后在一个窗口中显示修改后的图像。
Python
CODEBLOCK_429aac9f
输出结果
代码解析:
- cv2.rectangle(image, (5, 5), (220, 220), (255, 0, 0), 2): 这行代码在图像上从点 (5, 5) 到 (220, 220) 绘制了一个蓝色的矩形,边框粗细为 2 像素。
- cv2.imshow(): 打开一个名为 "Image" 的窗口,并显示绘制了矩形的图像。
示例 2:在灰度图像上绘制填充的黑色矩形
在这个例子中,我们将以灰度模式读取图像,并在上面绘制一个填充的黑色矩形,然后显示结果。
Python
CODEBLOCK_ab20af67
输出结果
!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20190807004238/ex2output.png">ex2output
代码解析:
- image = cv2.imread(r‘logo.png‘, 0): 以灰度模式读取图像(参数 0 表示单通道灰度图)。
- cv2.rectangle(image, (100, 50), (125, 80), 0, -1): 在图像上从 (100, 50) 到 (125, 80) 绘制了一个填充黑色的矩形。
- cv2.imshow(‘Image‘, image): 在名为 "Image" 的窗口中显示修改后的图像。
常见应用场景
让我们来看看 cv2.rectangle() 在哪些常见的场景中能发挥作用:
- 在图像或视频中高亮显示检测到的对象。
- 为人脸或目标检测创建边界框。
- 标记感兴趣的区域(ROI)。
- 在计算机视觉处理流程中进行可视化调试。