dharak003's picture
Upload 24 files
dba26ff verified
import os
import csv
from Damage_calculation import DamageCalculator
class CSVGenerator:
def __init__(self, output_folder):
self.damage_folder = os.path.join(output_folder, 'damage/labels')
self.parts_folder = os.path.join(output_folder, 'parts/labels')
self.output_csv = os.path.join(output_folder, 'damage_estimation.csv')
self.calculator = DamageCalculator()
def process_files(self):
damage_files = sorted(os.listdir(self.damage_folder))
parts_files = sorted(os.listdir(self.parts_folder))
total_cost_min = 0
total_cost_max = 0
damage_data = []
with open(self.output_csv, 'w', newline='') as csvfile:
fieldnames = ['Car Parts', 'Damage Type', 'Damage Count', 'Severity', 'Estimated Cost Range']
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
for damage_file, parts_file in zip(damage_files, parts_files):
damage_path = os.path.join(self.damage_folder, damage_file)
parts_path = os.path.join(self.parts_folder, parts_file)
damage_classes, damage_polygons = self.calculator.parse_coordinates(damage_path)
part_classes, part_polygons = self.calculator.parse_coordinates(parts_path)
damage_polygons = list(zip(damage_classes, damage_polygons))
part_polygons = list(zip(part_classes, part_polygons))
intersection_info = self.calculator.calculate_intersection_area(damage_polygons, part_polygons)
for info in intersection_info:
writer.writerow({
'Car Parts': info['part_class'],
'Damage Type': info['damage_class'],
'Damage Count': info['count'],
'Severity': info['severity'],
'Estimated Cost Range': f"Rs. {info['cost_min']}-{info['cost_max']}"
})
total_cost_min += info['cost_min']
total_cost_max += info['cost_max']
damage_data.append({
'damage_class': info['damage_class'],
'part_class': info['part_class'],
'coverage_percentage': info['coverage_percentage']
})
writer.writerow({
'Car Parts': 'Total',
'Damage Type': '',
'Damage Count': '',
'Severity': '',
'Estimated Cost Range': f"Rs. {total_cost_min}-{total_cost_max}"
})
return damage_data
def main(output_folder):
generator = CSVGenerator(output_folder)
generator.process_files()
if __name__ == "__main__":
output_folder = 'Output'
main(output_folder)