Example #1
0
    def all_resources_preparation(self):
        path_to_cvat_data = self.path_to_cvat_data
        #target_path = self.background_target_path

        cvat_data = CvatDataset()
        cvat_data.load(path_to_cvat_data)

        image_ids = cvat_data.get_image_ids()

        polygons = []
        points = []
        image_sizes = []
        image_names = []
        for idx, image in enumerate(image_ids):
            polygons.append(cvat_data.get_polygons(image))
            points.append(cvat_data.get_points(image))
            image_sizes.append(cvat_data.get_size(image))
            image_names.append(cvat_data.get_name(image))

            points_list = points[idx]
            image_size = image_sizes[idx]
            image_name = image_names[idx]

            # background creation
            self.background_alignment(points_list=points_list, image_size=image_size, image_name=image_name)

            # cars cropping
            car_polygons = polygons[idx]
            self.cars_cropping(car_polygons=car_polygons, image_name=image_name)

        print(image_ids)
def main(args):
    global output_CvatDataset
    global input_CvatDataset
    
    input_CvatDataset = CvatDataset()
    input_CvatDataset.load(args.input_file)
    output_CvatDataset = CvatDataset()
    
    list_of_polygons = points_please()
    get_polygons(list_of_polygons)
    dump(args.output_file)
Example #3
0
def dump(polygons, output_file):
    ds = CvatDataset()
    image_id = 0
    for POINTS in polygons:
        ds.add_image(image_id)
        for points in POINTS:
            ds.add_polygon(
                image_id=image_id,
                points=points,
                label="car",
                occluded=0)
        image_id += 1
        print(image_id)
    ds.dump(output_file)
Example #4
0
def points_please(input_file):
    ds = CvatDataset()
    ds.load(input_file)
    polygons = list()
    all_polygons = list()
    for image_id in ds.get_image_ids():
        for polygon in ds.get_polygons(image_id):
            label = label_image(polygon["label"].replace("_", "."))
            polygons += [polygon["points"]]
        for i in range(len(polygons)):
            for j in range(len(polygons[i])):
                polygons[i][j] = tuple(polygons[i][j])
        all_polygons.append(polygons)
        polygons = list()
    return all_polygons
Example #5
0
def main(args):
    ds = CvatDataset()
    ds.load(args.input_file)

    for file in os.listdir(args.output_folder):
        file_path = os.path.join(args.output_folder, file)
        if os.path.isfile(file_path):
            os.unlink(file_path)

    for image_id in tqdm(ds.get_image_ids()):
        f = open(args.output_folder+"/" + str(image_id) + '.txt', 'w')
        polygons = ds.get_polygons(image_id)
        for polygon in polygons:
            box = polygon_to_box(polygon["points"])
            box["label"] = polygon["label"]
            write_file(f, box)
        boxes = ds.get_boxes(image_id)
        for box in boxes:
            write_file(f, box)
        f.close()
Example #6
0
def main(args):
    ds = CvatDataset()
    ds.load(args.annot_xml)

    result = []
    for image_id in tqdm(ds.get_image_ids()):
        filename = "{:0>6}".format(image_id)
        boxes = ds.get_boxes(image_id)
        for box in boxes:
            label = box["label"].replace("_", ".")
            occluded = box["occluded"]
            record = {k: int(box[k]) for k in ["xtl", "ytl", "xbr", "ybr"]}
            record["frame"] = int(os.path.join("", filename))
            record["class"] = label
            record["occluded"] = occluded

            result.append(record)

    df = pd.DataFrame(
        result,
        columns=["frame", "occluded", "xtl", "ytl", "xbr", "ybr", "class"])
    polygons(df)
Example #7
0
def polygons(df_file):
    df = pd.DataFrame(
        columns=["frame", "occluded", "xtl", "ytl", "xbr", "ybr", "class"])
    ds = CvatDataset()
    frames = df_file["frame"]
    frames = list(set(frames))
    frames.sort()
    for frame in frames:
        df = df_file.loc[df_file.frame == frame]
        ds.add_image(frame)
        for record in df.to_dict("records"):
            label = list(map(label_image, [record["class"]]))[0]
            if label == "round":
                ds.add_polygon(image_id=frame,
                               points=polygon_round(record["xtl"],
                                                    record["ytl"],
                                                    record["xbr"],
                                                    record["ybr"]),
                               label=record["class"],
                               occluded=int(record["occluded"]))

            elif label == "rhombus":
                ds.add_polygon(image_id=frame,
                               points=polygon_rhombus(record["xtl"],
                                                      record["ytl"],
                                                      record["xbr"],
                                                      record["ybr"]),
                               label=record["class"],
                               occluded=int(record["occluded"]))

            elif label == "triangle":
                ds.add_polygon(image_id=frame,
                               points=polygon_triangle(record["xtl"],
                                                       record["ytl"],
                                                       record["xbr"],
                                                       record["ybr"]),
                               label=record["class"],
                               occluded=int(record["occluded"]))

            elif label == "reverse_triangle":
                ds.add_polygon(image_id=frame,
                               points=polygon_reverse_triangle(
                                   record["xtl"], record["ytl"], record["xbr"],
                                   record["ybr"]),
                               label=record["class"],
                               occluded=int(record["occluded"]))
            else:
                ds.add_box(image_id=frame,
                           xtl=record["xtl"],
                           ytl=record["ytl"],
                           xbr=record["xbr"],
                           ybr=record["ybr"],
                           label=record["class"],
                           occluded=int(record["occluded"]))
    ds.dump(args.output_file)