shikibu9419's picture
Fix bug
30516e0
Raw
History Blame Contribute Delete
1.67 kB
import os
import re
import cv2
import numpy as np
from glob import glob
from src.cyano import Cyanotype
from src.mono_alternative import MonoAlternative
print('Fitting models...')
models = {
'cyanotype_full': Cyanotype(),
'cyanotype_mono': MonoAlternative('cyanotype_mono'),
'salt': MonoAlternative('salt'),
'platinum': MonoAlternative('platinum'),
}
def get_suffix_number(directory):
files = glob(f'{directory}/*.png')
suffixes = [re.search(r'[0-9]+', f) for f in files]
return max([int(s.group()) for s in suffixes if s] + [0]) + 1
def update_patch(process_name, colorpatch):
model = models[process_name]
model.update_patch(colorpatch)
model.fit_model()
def predict_img(process_name, img):
out_dir = f'outputs/{process_name}'
if not os.path.exists(out_dir):
os.makedirs(out_dir)
suf = get_suffix_number(out_dir)
model = models[process_name]
if process_name != 'cyanotype_full':
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
pred_img = model.predict_img(img)
out_path = f'{out_dir}/linear_{suf}.png'
cv2.imwrite(out_path, pred_img)
return model.predict_img(pred_img)
def optimize_img(process_name, img):
out_dir = f'outputs/{process_name}'
if not os.path.exists(out_dir):
os.makedirs(out_dir)
suf = get_suffix_number(out_dir)
model = models[process_name]
if process_name != 'cyanotype_full':
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
x0, opt_img = model.tf_optimize(img)
out_path = f'{out_dir}/opt_{suf}.png'
cv2.imwrite(out_path, opt_img)
out_path = f'{out_dir}/x0_{suf}.png'
cv2.imwrite(out_path, x0)
return x0.astype(np.uint8), opt_img.astype(np.uint8)