Compare commits

...

4 Commits

Author SHA1 Message Date
KrisKennaway 6573bad509
Merge pull request #10 from KrisKennaway/fix-lookahead
Fix --lookahead parsing
2023-01-31 21:32:02 +00:00
kris 0560409717 Fix --lookahead parsing 2023-01-31 21:28:40 +00:00
KrisKennaway 055851aa9c
Merge pull request #9 from KrisKennaway/create-data-dir
Create data directory before writing to it
2023-01-31 21:15:03 +00:00
kris 2ab582790c Create data directory before writing to it 2023-01-31 21:12:42 +00:00
2 changed files with 23 additions and 7 deletions

View File

@ -10,6 +10,7 @@ import image as image_py
import palette as palette_py
import screen as screen_py
# TODO:
# - support additional graphics modes (easiest --> hardest):
# - LR/DLR
@ -52,10 +53,12 @@ def main():
def validate_lookahead(arg: int) -> int:
try:
int_arg = int(arg)
if int_arg < 1:
return int_arg
except Exception:
raise argparse.ArgumentTypeError("--lookahead must be an integer")
if int_arg < 1:
raise argparse.ArgumentTypeError("--lookahead must be at least 1")
return int_arg
dhr_parser.add_argument(
"--lookahead", type=validate_lookahead, default=8,
help=("How many pixels to look ahead to compensate for NTSC colour "
@ -115,23 +118,26 @@ def prepare_image(image_filename: str, show_input: bool, screen,
return image_py.resize(image, screen.X_RES, screen.Y_RES,
gamma=gamma_correct)
def convert_dhr(args):
palette = palette_py.PALETTES[args.palette]()
screen = screen_py.DHGRNTSCScreen(palette)
image = prepare_image(args.input, args.show_input, screen,
args.gamma_correct)
args.gamma_correct)
convert_dhr_py.convert(screen, image, args)
def convert_dhr_mono(args):
screen = screen_py.DHGRScreen()
image = prepare_image(args.input, args.show_input, screen, args.gamma_correct)
image = prepare_image(args.input, args.show_input, screen,
args.gamma_correct)
convert_dhr_py.convert_mono(screen, image, args)
def convert_shr(args):
screen = screen_py.SHR320Screen()
image = prepare_image(args.input, args.show_input, screen, args.gamma_correct)
image = prepare_image(args.input, args.show_input, screen,
args.gamma_correct)
convert_shr_py.convert(screen, image, args)

View File

@ -6,6 +6,8 @@ colours when optimizing the image conversion (since this perceptual
difference corresponds to the Euclidean distance in this colour space)
"""
import os
import colour
import numpy as np
@ -14,7 +16,15 @@ def srgb_to_linear_rgb_array(a: np.ndarray, gamma=2.4) -> np.ndarray:
return np.where(a <= 0.04045, a / 12.92, ((a + 0.055) / 1.055) ** gamma)
DATA_DIR = 'data'
def main():
try:
os.mkdir(DATA_DIR, mode=0o755)
except FileExistsError:
pass
print("Precomputing conversion matrix from 24-bit RGB to CAM16UCS colour "
"space")
# Compute matrix of all 24-bit RGB values, normalized to 0..1 range
@ -30,7 +40,7 @@ def main():
rgb24_to_cam16ucs = colour.convert(all_rgb24, "RGB", "CAM16UCS").astype(
np.float32)
del all_rgb24
np.save("data/rgb24_to_cam16ucs.npy", np.ascontiguousarray(
np.save("%s/rgb24_to_cam16ucs.npy" % DATA_DIR, np.ascontiguousarray(
rgb24_to_cam16ucs))
del rgb24_to_cam16ucs
@ -61,7 +71,7 @@ def main():
rgb12_iigs_to_cam16ucs = colour.convert(
rgb12_iigs, "RGB", "CAM16UCS").astype(np.float32)
del rgb12_iigs
np.save("data/rgb12_iigs_to_cam16ucs.npy", np.ascontiguousarray(
np.save("%s/rgb12_iigs_to_cam16ucs.npy" % DATA_DIR, np.ascontiguousarray(
rgb12_iigs_to_cam16ucs))
del rgb12_iigs_to_cam16ucs