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 palette as palette_py
import screen as screen_py import screen as screen_py
# TODO: # TODO:
# - support additional graphics modes (easiest --> hardest): # - support additional graphics modes (easiest --> hardest):
# - LR/DLR # - LR/DLR
@ -52,10 +53,12 @@ def main():
def validate_lookahead(arg: int) -> int: def validate_lookahead(arg: int) -> int:
try: try:
int_arg = int(arg) int_arg = int(arg)
if int_arg < 1:
return int_arg
except Exception: except Exception:
raise argparse.ArgumentTypeError("--lookahead must be an integer")
if int_arg < 1:
raise argparse.ArgumentTypeError("--lookahead must be at least 1") raise argparse.ArgumentTypeError("--lookahead must be at least 1")
return int_arg
dhr_parser.add_argument( dhr_parser.add_argument(
"--lookahead", type=validate_lookahead, default=8, "--lookahead", type=validate_lookahead, default=8,
help=("How many pixels to look ahead to compensate for NTSC colour " 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, return image_py.resize(image, screen.X_RES, screen.Y_RES,
gamma=gamma_correct) gamma=gamma_correct)
def convert_dhr(args): def convert_dhr(args):
palette = palette_py.PALETTES[args.palette]() palette = palette_py.PALETTES[args.palette]()
screen = screen_py.DHGRNTSCScreen(palette) screen = screen_py.DHGRNTSCScreen(palette)
image = prepare_image(args.input, args.show_input, screen, image = prepare_image(args.input, args.show_input, screen,
args.gamma_correct) args.gamma_correct)
convert_dhr_py.convert(screen, image, args) convert_dhr_py.convert(screen, image, args)
def convert_dhr_mono(args): def convert_dhr_mono(args):
screen = screen_py.DHGRScreen() 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) convert_dhr_py.convert_mono(screen, image, args)
def convert_shr(args): def convert_shr(args):
screen = screen_py.SHR320Screen() 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) 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) difference corresponds to the Euclidean distance in this colour space)
""" """
import os
import colour import colour
import numpy as np 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) return np.where(a <= 0.04045, a / 12.92, ((a + 0.055) / 1.055) ** gamma)
DATA_DIR = 'data'
def main(): def main():
try:
os.mkdir(DATA_DIR, mode=0o755)
except FileExistsError:
pass
print("Precomputing conversion matrix from 24-bit RGB to CAM16UCS colour " print("Precomputing conversion matrix from 24-bit RGB to CAM16UCS colour "
"space") "space")
# Compute matrix of all 24-bit RGB values, normalized to 0..1 range # 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( rgb24_to_cam16ucs = colour.convert(all_rgb24, "RGB", "CAM16UCS").astype(
np.float32) np.float32)
del all_rgb24 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)) rgb24_to_cam16ucs))
del rgb24_to_cam16ucs del rgb24_to_cam16ucs
@ -61,7 +71,7 @@ def main():
rgb12_iigs_to_cam16ucs = colour.convert( rgb12_iigs_to_cam16ucs = colour.convert(
rgb12_iigs, "RGB", "CAM16UCS").astype(np.float32) rgb12_iigs, "RGB", "CAM16UCS").astype(np.float32)
del rgb12_iigs 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)) rgb12_iigs_to_cam16ucs))
del rgb12_iigs_to_cam16ucs del rgb12_iigs_to_cam16ucs