边界框提取



我在.xml文件中发现一个用于生成xmin、xmax、ymin、ymax的函数时遇到了一些问题。我不知道为什么它不起作用,我觉得这是一个我没有考虑的简单错误。

def extract_boxes(self, filename):

# load and parse the file
tree = ElementTree.parse(filename)
# get the root of the document
root = tree.getroot()
# extract each bounding box
boxes = list()
for box in root.findall('.//bndbox'):
xmin = int(box.find('xmin').text)
ymin = int(box.find('ymin').text)
xmax = int(box.find('xmax').text)
ymax = int(box.find('ymax').text)
coors = [xmin, ymin, xmax, ymax]
boxes.append(coors)

# extract image dimensions
width = int(root.find('.//size/width').text)
height = int(root.find('.//size/height').text)
return boxes, width, height

bbs = extract_boxes(r'C:UsersnameDesktopkangaroo-masterannots0001.xml')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-18-b6a299d4377e> in <module>
23 
24 
---> 25 bbs = extract_boxes(r'C:UsersnameDesktopkangaroo-masterannots0001.xml')
26 
27 
TypeError: extract_boxes() missing 1 required positional argument: 'filename'

我发现了错误。我没有在中导入元素树,需要删除self,因为我最初是从类中提取代码的,但现在不再在类中使用它了。

import xml.etree.ElementTree as ET
def extract_boxes(filename):        
# load and parse the file
tree = ET.parse(filename)
# get the root of the document
root = tree.getroot()
# extract each bounding box
boxes = list()
for box in root.findall('.//bndbox'):
xmin = int(box.find('xmin').text)
ymin = int(box.find('ymin').text)
xmax = int(box.find('xmax').text)
ymax = int(box.find('ymax').text)
coors = [xmin, ymin, xmax, ymax]
boxes.append(coors)

# extract image dimensions
width = int(root.find('.//size/width').text)
height = int(root.find('.//size/height').text)
return boxes, width, height

bbs = extract_boxes(r'C:UserszleslDesktopkangaroo-masterannots0001.xml')```