📜  Python 文件使用 OpenCV 写入所有边界框坐标 - Python (1)

📅  最后修改于: 2023-12-03 15:19:10.122000             🧑  作者: Mango

Python 文件使用 OpenCV 写入所有边界框坐标

OpenCV 是一个强大的计算机视觉库,提供了各种图像处理和分析功能。在本篇文章中,我们将使用 OpenCV 在图像上绘制所有边界框的坐标,并将其保存为一个文本文件。

简介

在计算机视觉中,边界框是一个矩形框,用于表示图像中的对象/目标。在深度学习中,边界框通常与目标检测和图像分割任务一同使用。

OpenCV 提供了绘制边界框的功能。我们可以使用这个功能来写入图像中所有边界框的坐标信息。

步骤
  1. 导入相关库:
import cv2
import os
import glob
  1. 指定图像文件路径:
image_path = "path/to/image"
  1. 加载图像:
img = cv2.imread(image_path)
  1. 加载边界框坐标信息:
# 具体的坐标信息格式为:[x1, y1, x2, y2]
# 例如:[[10, 20, 100, 200], [50, 60, 150, 250], ...]
bbox = [[10, 20, 100, 200], [50, 60, 150, 250], ...]
  1. 遍历所有边界框,并在图像中绘制:
for box in bbox:
    x1, y1, x2, y2 = box
    cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
  1. 保存绘制好的图像:
cv2.imwrite("path/to/output/image", img)
  1. 将所有边界框坐标信息写入文本文件:
# 打开文件
with open("path/to/output/bbox.txt", "w") as f:
    # 遍历所有边界框
    for box in bbox:
        # 写入坐标信息
        f.write("{}\n".format(",".join(str(b) for b in box)))
完整代码

下面是完整的代码片段:

import cv2
import os
import glob

# 图像文件路径
image_path = "path/to/image"

# 加载图像
img = cv2.imread(image_path)

# 边界框坐标信息
bbox = [[10, 20, 100, 200], [50, 60, 150, 250], ...]

# 遍历所有边界框
for box in bbox:
    # 提取坐标信息
    x1, y1, x2, y2 = box
    # 在图像中绘制边界框
    cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)

# 保存图像
cv2.imwrite("path/to/output/image", img)

# 写入边界框坐标信息
with open("path/to/output/bbox.txt", "w") as f:
    # 遍历所有边界框
    for box in bbox:
        # 写入坐标信息
        f.write("{}\n".format(",".join(str(b) for b in box)))
结论

本文介绍了如何使用 OpenCV 在图像上绘制所有边界框的坐标,并将其保存为一个文本文件。这是一个很有用的工具,在目标检测和图像分割中经常使用。您只需要调整边界框坐标信息,并保存即可。