Merge pull request #13 from microsoft/laserprec/bugfix/trailinglash

Bugfix img not generated due to missing trailling '/' in dist folder
This commit is contained in:
Jianjie Liu 2021-01-27 09:44:18 -05:00 коммит произвёл GitHub
Родитель d738bbb93e 741c61c4d3
Коммит 1227eff672
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 33 добавлений и 12 удалений

Просмотреть файл

@ -61,7 +61,7 @@ class AnalogDocumentGeneration(object):
generator = self.doc_generator.create_generator(content, [template]) generator = self.doc_generator.create_generator(content, [template])
# Generate the image # Generate the image
doc = next(generator) doc = next(generator) # TODO: this does not exhaust all of the style combinations in the generator
src = doc.render_array(resolution=self.resolution, channel="GRAYSCALE") src = doc.render_array(resolution=self.resolution, channel="GRAYSCALE")
# Degrade the image # Degrade the image
dst = self.degrader.apply_effects(src) dst = self.degrader.apply_effects(src)
@ -73,7 +73,7 @@ class AnalogDocumentGeneration(object):
# save it onto disk # save it onto disk
text_filename = os.path.basename(full_text_path) text_filename = os.path.basename(full_text_path)
img_filename = text_filename.replace(".txt", ".png") img_filename = text_filename.replace(".txt", ".png")
img_dst_path = target_folder + "img/" + img_filename img_dst_path = os.path.join(target_folder, "img", img_filename)
cv2.imwrite(img_dst_path, dst) cv2.imwrite(img_dst_path, dst)
return return

Просмотреть файл

@ -18,7 +18,7 @@ MULTI_PAGE_TEMPLATE_NAME = "multipage.html.jinja"
UNDEFINED_TEMPLATE_NAME = "not a valid template" UNDEFINED_TEMPLATE_NAME = "not a valid template"
TEST_OUTPUT_DIR = "test_out" TEST_OUTPUT_DIR = "test_out"
FILE_DESTINATION = TEST_OUTPUT_DIR + "/save.png" FILE_DESTINATION = os.path.join(TEST_OUTPUT_DIR, "save.png")
CUSTOM_STYLE = { CUSTOM_STYLE = {
"font_family": ["Calibri", "Times"], "font_family": ["Calibri", "Times"],

Просмотреть файл

@ -1,10 +1,20 @@
import os
import glob import glob
import pytest import pytest
from genalog import pipeline from genalog import pipeline
from genalog.generation.document import DocumentGenerator
EXAMPLE_TEXT_FILE = "tests/unit/text/data/gt_1.txt" EXAMPLE_TEXT_FILE = "tests/unit/text/data/gt_1.txt"
INPUT_TEXT_FILENAMES = glob.glob("tests/unit/text/data/gt_*.txt")
STYLES = {"font_size": ["5px"]}
STYLES_COMBINATION = {"font_size": ["5px", "6px"]} # Multiple values per style are not supported right now
DEGRATIONS = [
("blur", {"radius": 3}),
("morphology", {"operation": "close"})
]
@pytest.fixture @pytest.fixture
@ -14,14 +24,13 @@ def default_analog_generator():
@pytest.fixture @pytest.fixture
def custom_analog_generator(): def custom_analog_generator():
custom_styles = {"font_size": ["5px"]}
custom_degradation = [("blur", {"radius": 3})]
return pipeline.AnalogDocumentGeneration( return pipeline.AnalogDocumentGeneration(
styles=custom_styles, degradations=custom_degradation, resolution=300 styles=STYLES, degradations=DEGRATIONS, resolution=300
) )
def test_default_generate_img(default_analog_generator): def test_default_generate_img(default_analog_generator):
assert len(default_analog_generator.list_templates()) > 0
example_template = default_analog_generator.list_templates()[0] example_template = default_analog_generator.list_templates()[0]
default_analog_generator.generate_img( default_analog_generator.generate_img(
EXAMPLE_TEXT_FILE, example_template, target_folder=None EXAMPLE_TEXT_FILE, example_template, target_folder=None
@ -29,15 +38,27 @@ def test_default_generate_img(default_analog_generator):
def test_custom_generate_img(custom_analog_generator): def test_custom_generate_img(custom_analog_generator):
assert len(custom_analog_generator.list_templates()) > 0
example_template = custom_analog_generator.list_templates()[0] example_template = custom_analog_generator.list_templates()[0]
custom_analog_generator.generate_img( custom_analog_generator.generate_img(
EXAMPLE_TEXT_FILE, example_template, target_folder=None EXAMPLE_TEXT_FILE, example_template, target_folder=None
) )
def test_generate_dataset_multiprocess(): @pytest.mark.parametrize("styles", [
INPUT_TEXT_FILENAMES = glob.glob("tests/unit/text/data/gt_*.txt") STYLES,
with pytest.deprecated_call(): pytest.param(
pipeline.generate_dataset_multiprocess( STYLES_COMBINATION, marks=pytest.mark.xfail(
INPUT_TEXT_FILENAMES, "test_out", {}, [], "text_block.html.jinja" reason="Style combinations are not supported. Only one value per style", strict=True)
) )
])
@pytest.mark.parametrize("folder_name", ["result", "result/"])
def test_generate_dataset_multiprocess(tmpdir, folder_name, styles):
assert len(INPUT_TEXT_FILENAMES) > 0
output_folder = os.path.join(tmpdir, folder_name)
pipeline.generate_dataset_multiprocess(
INPUT_TEXT_FILENAMES, output_folder, styles, DEGRATIONS, "text_block.html.jinja"
)
num_generated_img = glob.glob(os.path.join(output_folder, "**/*.png"))
assert len(num_generated_img) > 0
assert len(num_generated_img) == len(INPUT_TEXT_FILENAMES) * len(DocumentGenerator.expand_style_combinations(styles))