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()
。