从边界框获取对象[对象检测]

时间:2019-12-10 17:28:49

标签: python object detection yolo vision

我有一个.txt文件,其中每行包含options: { node: {...}, 'node[cls-missing']: { backgroundColor: 'red' } } ,还有一个path/to/image.jpg,xmin,ymin,xmax,ymax文件夹,其中包含jpg图片。使用python提取每个文件坐标内的“对象”并查看边界框是否设置正确的最佳方法是什么?

谢谢!

2 个答案:

答案 0 :(得分:0)

您的文本文件是CSV(逗号分隔值),可以这样加载。

您可以简单地使用PIL将文件夹中的每个图像裁剪到边界框:

import csv
from PIL import Image

f = open('test.csv')
csv_f = csv.reader(f)

#iterate through rows of your CSV
for row in csv_f:

  #open image using PIL
  im = Image.open(row[0])
  #crop box format: xmin, ymin, xmax, ymax
  crop_box = (row[1], row[2], row[3], row[4])
  #convert values to int
  crop_box = map(int, crop_box)
  #crop using PIL
  im = im.crop((crop_box))
  #save the image to predetermined savepath
  im.save(save_name)

答案 1 :(得分:0)

您可以使用opencv-python库:

import cv2

# Reading the file
with open("filename.txt") as iostream:
    content = iostream.read()

# Visualizing the data
color = (0, 0, 255) # RED
for line in content.split("\n"):
    image_path, xmin, ymin, xmax, ymax = line.split(",")
    image = cv2.imread(image_path)
    pt1 = (int(xmin), int(ymin))
    pt2 = (int(xmax), int(ymax))
    cv2.rectangle(image, pt1, pt2, color)
    cv2.imshow("Visualization bounding box", image)
    cv2.waitKey()

此代码将显示每个图像,并带有一个红色矩形以显示边界框。如果按任意键,它将切换到下一个。

如果要保存裁剪后的图像,可以使用以下方式:

    outfile = image_path[:-4] + "_bbox.jpg"
    outimage = image[int(ymin):int(ymax), int(xmin):int(xmax)]
    cv2.imwrite(outfile, outimage)