import cv2 import numpy as np from pallete_schema import PalleteSchema from common import convert_color, closest_color, create_colored_image, remove_from_list class ComparisonComparison: def __init__ (self) : red = [0, 10, 200] green = [5, 250, 5] blue = [240, 0, 20] comp_colors = [red, green, blue] pallete = PalleteSchema('./palletes/printed_pallete.json') i = 0 row = [] rows = [] for color in pallete.colors : cell = create_colored_image(60, 40, color['color']) row.append(cell) i += 1 if i == 10 : i = 0 rows.append(np.hstack(row)) row = [] show = np.vstack(rows) cv2.imshow('image', show) cv2.waitKey(0) color_spaces = ['RGB', 'BGR', 'LAB', 'HSV'] for space in color_spaces : print(f'Comparing in color space {space}') colors = self.get_colors(pallete.colors, space) show = [] for cc in comp_colors : cccompare = convert_color(cc, 'RGB', space) print(cccompare) closest = closest_color(colors, cccompare) print(closest) colors = remove_from_list(colors, closest) ccbgr = convert_color(cc, 'RGB', 'BGR') chosenbgr = convert_color(closest, space, 'BGR') original = create_colored_image(100, 100, ccbgr) chosen = create_colored_image(100, 100, chosenbgr) print(f'{ccbgr} => {chosenbgr}') combined = np.hstack([original, chosen]) show.append(combined) show = np.vstack(show) cv2.imshow('image', show) cv2.waitKey(0) def get_colors (self, pallete, space) : colors = [] for color in pallete : colors.append(convert_color(color['color'], color['space'], space)) return colors if __name__ == "__main__": ComparisonComparison()