当前位置: 首页 > news >正文

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) 表示蓝色),灰度图则为标量值。
thicknessint线条粗细:正数表示边框粗细,-1 表示填充矩形(实心)。默认值为 1。
lineTypeint线条类型(如 cv2.LINE_AA 抗锯齿)。默认是 cv2.LINE_8
shiftint坐标的小数位数(通常忽略,默认为 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()

相关文章:

  • 数据结构的基本概念以及算法的基本内容
  • [UVM]在SoC中用寄存器模型backdoor访问寄存器的案例
  • MaC QT 槽函数和Lambda表达式
  • 打印Activity的调用者
  • 2444. 统计定界子数组的数目
  • 简介QML中的Canvas
  • 【Mytais系列】SqlSession
  • 传奇各版本迭代时间及内容变化,屠龙/嗜魂法杖/逍遥扇第一次出现的时间和版本
  • JVM——JVM 是如何处理异常的?
  • 双指针算法详解(含力扣和蓝桥杯例题)
  • 《计算机系统结构》考题知识点整理
  • 用可视化学习双指针法
  • 视频编解码学习一之相关学科
  • 数学实验Matlab
  • 自定义Dagster I/O管理器:灵活管理数据输入输出
  • PyTorch_点积运算
  • 隐藏元素的多种方式
  • 2025年4月人工智能发展前沿
  • 【JS逆向】某点数据登录逆向分析
  • 链表的回文结构题解
  • 竞彩湃|新科冠军利物浦留力?纽卡斯尔全力冲击欧冠
  • 罗志田:文学革命的社会功能与社会反响
  • 马上评|“景区陪爬”能成为新职业吗?
  • 思政课也精彩,“少年修齐讲堂”开讲《我的中国“芯”》
  • 上海“模速空间”:将形成人工智能“北斗七星”和群星态势
  • 西班牙葡萄牙突发全国大停电,欧洲近年来最严重停电事故何以酿成