From 89afb8f920351bd0e0ad553cd6f4a14349751f3c Mon Sep 17 00:00:00 2001 From: Matthias Bisping Date: Mon, 4 Apr 2022 13:55:48 +0200 Subject: [PATCH] added cooridate transformation testing by images --- .../unit_tests/coordinate_transformer_test.py | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/test/unit_tests/coordinate_transformer_test.py b/test/unit_tests/coordinate_transformer_test.py index 15569f0..accfd86 100644 --- a/test/unit_tests/coordinate_transformer_test.py +++ b/test/unit_tests/coordinate_transformer_test.py @@ -4,6 +4,7 @@ from fpdf import fpdf from funcy import compose from pdf2image import pdf2image +from image_prediction.estimator.preprocessor.utils import image_to_normalized_tensor from image_prediction.image_extractor.extractor import ImageMetadataPair from image_prediction.info import Info from image_prediction.transformer.transformers.coordinate.fitz import FitzCoordinateTransformer @@ -65,6 +66,16 @@ def test_pdfnet_coordinate_transformer(position_metadata_in_given_system, positi ) +@pytest.mark.parametrize("coordinate_system", ["fpdf"]) +def test_fpdf_coordinate_transformer_by_image(position_metadata_in_given_system, position_metadata_in_reference_system): + metadata_transformed = FPDFCoordinateTransformer()(position_metadata_in_given_system) + + target_image = metadata_to_test_image(position_metadata_in_reference_system) + test_image = metadata_to_test_image(metadata_transformed) + + assert np.allclose(target_image, test_image) + + @pytest.fixture def position_metadata_in_given_system(corner, corner2metadata_in_given_system): return corner2metadata_in_given_system[corner] @@ -160,31 +171,25 @@ def base_position_metadata(width=100, height=100): } -# utils not needed for tests but for inferring new coordinates systems: +def metadata_to_test_image(metadata): + image = get_coordinate_test_image() + pdf = get_coordinate_test_fpdf() + add_image(pdf, ImageMetadataPair(image, metadata)) + page_image = fpdf_to_page_tensor(pdf) + return page_image -@pytest.fixture -def coordinate_test_pdf(position_metadata_in_given_system, coordinate_test_image, coordinate_test_fpdf): - add_image(coordinate_test_fpdf, ImageMetadataPair(coordinate_test_image, position_metadata_in_given_system)) - return coordinate_test_fpdf.output(dest="S").encode("latin1") - - -@pytest.fixture -def coordinate_test_image(): +def get_coordinate_test_image(): return array_to_image(np.zeros(shape=(100, 100, 3))) -@pytest.fixture -def coordinate_test_fpdf(): +def get_coordinate_test_fpdf(): pdf = fpdf.FPDF(unit="pt", format=(300, 300)) return pdf -@pytest.fixture -def coordinate_test_page_image(coordinate_test_pdf): - return pdf2image.convert_from_bytes(coordinate_test_pdf)[0] - - -@pytest.fixture(params=["list", "dict"]) -def coordinate_type(request): - return request.param +def fpdf_to_page_tensor(fpdf): + pdf = fpdf.output(dest="S").encode("latin1") + page_image = pdf2image.convert_from_bytes(pdf)[0] + tensor = image_to_normalized_tensor(page_image) + return tensor