python使用cv2在图片上话矩形框
在 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)
注意事项
- 坐标顺序:pt1是左上角,pt2是右下角,确保x2 > x1且y2 > y1。
- 颜色通道:BGR 格式(非 RGB),例如红色是 (0, 0, 255)。
- 图像修改:函数会直接修改输入图像,若需保留原图,请先复制(img.copy())。
常见问题
- 如何绘制多个矩形?
 多次调用cv2.rectangle()或使用循环。
- 如何调整矩形位置?
 修改pt1和pt2的坐标值即可。
如果需要结合其他图形(如圆形、文本等),可以组合使用 cv2.circle() 或 cv2.putText()。
