libtuning: Reactivate macbeth locator

Add the missing pieces and store the result inside the image object.
This solution is not very nice, and should be refactored soon. For that
we need a concept to collect temperature and/or image specific results
in a central place. For now it serves the purpose.

Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
This commit is contained in:
Stefan Klug 2024-06-11 09:41:00 +02:00
parent 6672c49cbf
commit 611242b259
3 changed files with 13 additions and 5 deletions

View file

@ -24,6 +24,7 @@ class Image:
self.lsc_only = False
self.color = -1
self.lux = -1
self.macbeth = None
try:
self._load_metadata_exif()

View file

@ -17,12 +17,15 @@ import logging
from sklearn import cluster as cluster
from .ctt_ransac import get_square_verts, get_square_centres
from libtuning.image import Image
from .image import Image
logger = logging.getLogger(__name__)
class MacbethError(Exception):
pass
# Reshape image to fixed width without distorting returns image and scale
# factor
def reshape(img, width):
@ -377,7 +380,9 @@ def get_macbeth_chart(img, ref_data):
# Catch macbeth errors and continue with code
except MacbethError as error:
logger.warning(error)
# \todo: This happens so many times in a normal run, that it shadows
# all the relevant output
# logger.warning(error)
return (0, None, None, False)
@ -527,4 +532,6 @@ def locate_macbeth(image: Image, config: dict):
logger.warning(f'Macbeth patches have saturated in {image.path.name}')
return None
image.macbeth = macbeth
return macbeth

View file

@ -17,7 +17,7 @@ import logging
import libtuning as lt
from libtuning.image import Image
from libtuning.macbeth import locate_macbeth
from .macbeth import locate_macbeth
logger = logging.getLogger(__name__)
@ -127,7 +127,7 @@ def load_images(input_dir: str, config: dict, load_nonlsc: bool, load_lsc: bool)
continue
# Handle macbeth
macbeth = locate_macbeth(config)
macbeth = locate_macbeth(image, config)
if macbeth is None:
continue