added cooridate transformation testing by images

This commit is contained in:
Matthias Bisping 2022-04-04 13:55:48 +02:00
parent 1ffc9dcc68
commit 89afb8f920

View File

@ -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