在 Python 中使用 OpenCV (cv2) 在图片上绘制矩形框,可以使用 cv2.rectangle() 函数。以下是详细用法和示例:


函数原型

cv2.rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)

参数说明

参数 类型 说明
img 输入图像 要绘制矩形的图像(NumPy 数组格式,通常是 BGR 或灰度图像)。
pt1 元组 矩形左上角坐标,格式为 (x1, y1)
pt2 元组 矩形右下角坐标,格式为 (x2, y2)
color 元组/标量 矩形颜色,BGR 格式(如 (255, 0, 0) 表示蓝色),灰度图则为标量值。
thickness int 线条粗细:正数表示边框粗细,-1 表示填充矩形(实心)。默认值为 1。
lineType int 线条类型(如 cv2.LINE_AA 抗锯齿)。默认是 cv2.LINE_8
shift int 坐标的小数位数(通常忽略,默认为 0)。

示例代码

1. 绘制空心矩形框
import cv2
import numpy as np

# 创建黑色背景图像
img = np.zeros((400, 400, 3), dtype=np.uint8)

# 定义矩形左上角和右下角坐标
pt1 = (100, 100)  # 左上角 (x1, y1)
pt2 = (300, 300)  # 右下角 (x2, y2)

# 绘制蓝色矩形框(边框粗细为2)
cv2.rectangle(img, pt1, pt2, (255, 0, 0), thickness=2)

cv2.imshow("Rectangle", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
2. 绘制实心矩形框
# thickness=-1 表示填充矩形
cv2.rectangle(img, pt1, pt2, (0, 255, 0), thickness=-1)
3. 使用抗锯齿(更平滑的边缘)
cv2.rectangle(img, pt1, pt2, (0, 0, 255), thickness=3, lineType=cv2.LINE_AA)

注意事项

  1. 坐标顺序pt1 是左上角,pt2 是右下角,确保 x2 > x1y2 > y1
  2. 颜色通道:BGR 格式(非 RGB),例如红色是 (0, 0, 255)
  3. 图像修改:函数会直接修改输入图像,若需保留原图,请先复制(img.copy())。

常见问题

  • 如何绘制多个矩形?
    多次调用 cv2.rectangle() 或使用循环。
  • 如何调整矩形位置?
    修改 pt1pt2 的坐标值即可。

如果需要结合其他图形(如圆形、文本等),可以组合使用 cv2.circle()cv2.putText()

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐