From bb6eafbc74b207b78cce323e10a24f01cd87e88d Mon Sep 17 00:00:00 2001 From: Lars Noack Date: Thu, 24 Apr 2025 10:48:49 +0200 Subject: [PATCH] feat: added data classes --- secure_pixelation/data_classes.py | 39 +++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 secure_pixelation/data_classes.py diff --git a/secure_pixelation/data_classes.py b/secure_pixelation/data_classes.py new file mode 100644 index 0000000..e6ad680 --- /dev/null +++ b/secure_pixelation/data_classes.py @@ -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))