feat: added data classes

This commit is contained in:
Hazel 2025-04-24 10:48:49 +02:00
parent d7cf61ee2d
commit bb6eafbc74

View File

@ -0,0 +1,39 @@
from __future__ import annotations
from typing import Union
from pathlib import Path
import json
import cv2
import numpy as np
class RawImage:
def __init__(self, file: Union[Path, str]):
self.file = Path(file)
self.name = self.file.name
self.meta_file = self._get_path("boxes.json")
self.meta_data = self.read_meta()
self.image = self.get_image()
def _get_path(self, ending: str, original_suffix: bool = False) -> Path:
if original_suffix:
return self.file.with_name(self.file.stem + "_" + ending + self.file.suffix)
else:
return self.file.with_name(self.file.stem + "_" + ending)
def read_meta(self) -> dict:
if not self.meta_file.exists():
return {}
with self.meta_file.open("r") as f:
self.meta_data = json.load(f)
return self.meta_data
def write_meta(self):
with self.meta_file.open("w") as f:
json.dump(self.meta_data, f)
def get_image(self) -> np.ndarray:
return cv2.imread(str(self.file))