Implement border detection
This commit is contained in:
parent
b0eabd1297
commit
7eae871fc6
5 changed files with 224 additions and 18 deletions
|
|
@ -2,25 +2,24 @@ from pathlib import Path
|
|||
|
||||
from PIL import Image
|
||||
|
||||
from base_proxy import BASE_DIR
|
||||
from base_proxy import *
|
||||
from border_detection import Borders, detect_borders
|
||||
from sheet_layout import SheetLayout, CardImageTransfer
|
||||
|
||||
|
||||
W_INCHES_EXPECTED = 2.72
|
||||
H_INCHES_EXPECTED = 3.7
|
||||
|
||||
SAVE_INTERMEDIATE_FOR_DEBUG = False
|
||||
|
||||
|
||||
def make_intermediate_name(input_path: Path, infix: str):
|
||||
return BASE_DIR / 'cropped_cards' / f'{input_path.stem}.{infix}.jpg'
|
||||
|
||||
|
||||
class InputCardImage:
|
||||
def __init__(self, path: Path):
|
||||
self.path = path
|
||||
self.input_dpi = None
|
||||
self.original_im = None
|
||||
self.borders = None
|
||||
|
||||
def get_borders(self) -> Borders:
|
||||
if self.borders is None:
|
||||
self.load()
|
||||
self.borders = detect_borders(self)
|
||||
self.unload()
|
||||
return self.borders
|
||||
|
||||
def load(self) -> None:
|
||||
with Image.open(self.path) as im:
|
||||
|
|
@ -35,9 +34,11 @@ class InputCardImage:
|
|||
self.input_dpi = dpi_by_w
|
||||
self.original_im = rgb_im
|
||||
|
||||
def get_cropped_and_resized(self, layout: SheetLayout, transfer: CardImageTransfer) -> Image:
|
||||
new_dpi = layout.dpi
|
||||
def unload(self) -> None:
|
||||
self.input_dpi = None
|
||||
self.original_im = None
|
||||
|
||||
def get_cropped_and_resized(self, layout: SheetLayout, transfer: CardImageTransfer) -> Image:
|
||||
self.load()
|
||||
im = self.original_im
|
||||
print(f'Input is {im.size[0]} x {im.size[1]}')
|
||||
|
|
@ -72,4 +73,6 @@ class InputCardImage:
|
|||
if SAVE_INTERMEDIATE_FOR_DEBUG:
|
||||
im.save(make_intermediate_name(self.path, 'step2crop'), 'JPEG', dpi=(layout.dpi, layout.dpi), quality=100, subsampling=0)
|
||||
|
||||
self.unload()
|
||||
|
||||
return im
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue