OpenCV 绘制检测框

613 字
3 分钟
OpenCV 绘制检测框

OpenCV 绘制检测框#

检测框可视化是检查模型和标注质量最直接的方法。只看 txt 坐标或预测数组,很难发现框偏移、类别错位和尺度问题。

我通常在训练前画标注框,预测后画结果框,两边都看。

绘制矩形框#

img = cv2.imread("demo.jpg")
x1, y1, x2, y2 = 50, 40, 220, 180
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
cv2.imwrite("box.jpg", img)

OpenCV 颜色是 BGR,所以绿色是 (0, 255, 0)。

添加文字#

label = "person 0.92"
cv2.putText(
img, label, (x1, max(20, y1 - 8)),
cv2.FONT_HERSHEY_SIMPLEX, 0.6,
(0, 255, 0), 2,
)

文字位置要防止超出图片顶部,所以可以对 y 坐标做 max。

批量可视化#

批量画框时,不要覆盖原图。保存到单独的 outputs/vis 目录,便于对照原始图片。

from pathlib import Path
out_dir = Path("outputs/vis")
out_dir.mkdir(parents=True, exist_ok=True)
cv2.imwrite(str(out_dir / "demo_vis.jpg"), img)

检查重点#

  • 框是否覆盖目标,不偏移。

  • 类别文字是否和目标一致。

  • 坐标是 xyxy 还是 xywh,没有混用。

  • 归一化坐标是否已经还原到像素坐标。

实战复盘#

把《OpenCV 绘制检测框》用于真实视觉项目时,我会先做可视化抽查。图像任务里很多错误不会抛异常,例如颜色通道反了、检测框偏移、标签和图片不同步,但一张可视化结果就能暴露。

每个处理步骤都应该保存少量中间结果:原图、处理后图片、mask、绘制框图片或预测输出。不要只保存最终模型指标,因为指标无法告诉你是哪一步把数据处理坏了。

如果文章涉及批量处理,还要记录成功数量、失败数量和失败样本路径。视觉项目的数据量一大,没有失败清单就很难复查。

最小验收样例#

验收《OpenCV 绘制检测框》时,我会固定三张图片:一张正常样例、一张边界样例、一张容易失败的样例。每次改代码都用这三张图跑一遍,并保存输出结果。

视觉流程的验收必须能用眼睛确认。只打印数组 shape 或命令成功不够,至少要保存一张中间结果图或最终可视化图,确认处理效果和预期一致。

小结#

画框不是展示效果图,而是排查数据和模型问题。任何检测任务都值得先做可视化抽查。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

OpenCV 绘制检测框
https://blog.tjcheng.cn/posts/backfill/2026-06-04/opencv-draw-box-note/
作者
TengJinCheng
发布于
2026-06-04
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
TengJinCheng
Hello, I'm Teng.
公告
欢迎来到TengJinCheng工作铺!
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
157
分类
7
标签
114
总字数
109,939
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.4
文章许可
CC BY-NC-SA 4.0

文章目录