这是我的代码段:
from detectron2.utils.visualizer import ColorMode
from detectron2.structures import pairwise_iou
import random
import numpy
from numpy import savetxt
dataset_dicts = DatasetCatalog.get('/content/scaphoid/test')
for d in random.sample(dataset_dicts,20):
im = cv2.imread(d["file_name"])
outputs = predictor(im)
v = Visualizer(im[:, :, ::-1], metadata=microcontroller_metadata, scale=0.8)
v = v.draw_instance_predictions(outputs["instances"].to("cpu"))
bb2 =(outputs["instances"].get_fields()["pred_boxes"].tensor.to("cpu").numpy())
#numpy.savetxt("/content/output/bb2.csv",bb2, delimiter=',', header="xmin,ymin,xmax,ymax", comments="")
我想将bb2 np数组存储到一个csv文件中。 我尝试使用带注释的语句,但这仅保存了bb2的最后一个值,而不是所有值 我该怎么做? 谁能帮忙
答案 0 :(得分:1)
您在for循环中编写了numpy.savetxt语句,但没有追加数组,这就是为什么它会用最新值不断覆盖数组和csv文件的原因。
您可以创建一个空数组:
final = np.array([])
然后在bb2=(outputs["instances"].get_fields(["pred_boxes"].tensor.to("cpu").numpy())
之后
在for循环中编写以下代码:
final = np.append(final, bb2)
最后在for循环之外,编写numpy.savetxt语句:
numpy.savetxt("/content/output/bb2.csv",final, delimiter=',', header="xmin,ymin,xmax,ymax", comments="")
希望这可以解决您的问题!