def lab2bgr(matrix): """convert numpy of lab colors to bgr colors""" bgr_cols = [] for j in matrix: bgr_col = [] for lab in j: print(lab) rgb = convert_color(lab, "LAB", "RGB", lab2rgb) bgr = convert_color(rgb, "RGB", "BGR", rgb2bgr) bgr_col.append(bgr) bgr_cols.append(bgr_col) return bgr_cols
def hsv_to_bgr(cols): # convert numpy of hsv colors to bgr colors bgr_cols = [] for j in cols: bgr_col = [] for hsv in j: h, s, v = hsv rgb = convert_color((h,s*100,v*100), "HSV", "RGB", hsv2rgb) bgr = convert_color(rgb, "RGB", "BGR", rgb2bgr) bgr_col.append(bgr) bgr_cols.append(bgr_col) # len(bgr_cols[0]) 20 x 20 return bgr_cols
def get_bgr_lab_avg(data, label, col_rgb): bgr_cols = [] lab_cols = [] for i in range(len(lst)): avgcolcatrgb = np.mean( [np.array(eval(n)) for n in data[col_rgb][data[label] == lst[i]]], axis=0).tolist() rgb = list(np.array(avgcolcatrgb).astype(int)) bgr = [ int(el / 255) for el in convert_color(rgb, "RGB", "BGR", rgb2bgr) ] bgr_cols.append([np.round(l) for l in bgr]) lab = convert_color(np.array(avgcolcatrgb) / 255, "RGB", "LAB") lab_cols.append([np.round(l) for l in list(lab)]) return bgr_cols, lab_cols
def get_rgb_hcl(lab): lch_hue = [] lch = [] hcl = [] rgb = [] for el in lab: lch_el = convert_color((el), "LAB", "LCH") hcl.append(lch_el[::-1]) lch.append(lch_el) lch_hue.append((lch_el[2])) rgb_el = convert_color((el), "LAB", "RGB", lab2rgb) r, g, b = rgb_el rgb_el = r / 255, g / 255, b / 255 rgb.append(rgb_el) return rgb, hcl
def plot_feature_label_color(data): """ plot color name feature and basic color label finding basic color's values by averaging all color names belonging to that basic color""" for color_id in range(len(data['srgb'])): print(f'label: {color_id}') plot_color(eval(data['srgb'].iloc[color_id]), 10) basic_color = data['cat1'].iloc[color_id] print(f'feature: {color_id}') try: plot_color( eval(data['srgb'][data['name'] == basic_color].iloc[color_id]), 10) except: colsofcat = data['cielab'][data['cat1'] == basic_color] len_colsofcat = len(colsofcat) ls_ = [] as_ = [] bs_ = [] for i in range(len_colsofcat): r = eval(colsofcat.iloc[i])[0] ls_.append(r) g = eval(colsofcat.iloc[i])[1] as_.append(g) b = eval(colsofcat.iloc[i])[2] bs_.append(b) la = int(mean(ls_)) aa = int(mean(as_)) ba = int(mean(bs_)) srgb = convert_color([la, aa, ba], "LAB", "RGB", lab2rgb) plot_color(srgb, 10)
def print_hist_colors(lab, frequency): labfreq = zip(lab, frequency) labfreqslim = [el for el in list(labfreq) if el[-1] != 0] for el in labfreqslim: rgb_el = convert_color(el[0], "LAB", "RGB", lab2rgb) square = np.full((10, 10, 3), rgb_el, dtype=np.uint8) / 255.0 plt.figure(figsize=(5, 2)) plt.imshow(square) plt.axis('off') plt.show()
def lch_to_bgr(cols): # convert numpy of lch colors to bgr colors bgr_cols = [] for j in cols: bgr_col = [] for lch in j: lab = lch2lab(lch) bgr = convert_color(lab, "LAB", "BGR", lab2bgr) bgr_col.append(bgr) bgr_cols.append(bgr_col) # len(bgr_cols[0]) 20 x 20 return bgr_cols
def make_rgb_hsv_colorwheel_colors(): """ Color Wheel 30°-steps in different color spaces """ # RGB-Colors lst1 = [(255, 0, 0), (255, 128, 0), (255, 255, 0), (128, 255, 0), (0, 255, 0), (0, 255, 128), (0, 255, 255), (0, 128, 255), (0, 0, 255), (128, 0, 255), (255, 0, 255), (255, 0, 128)] lst2 = [] lst3 = [ 'red', 'orange', 'yellow', 'green-yellow', 'green', 'green-blue', 'cyan', 'blue-yellow', 'blue', 'purple', 'magenta', 'red-yellow' ] # HSV-Colors for i in range(len(lst1)): lst2.append(convert_color(lst1[i], "RGB", "HSV", rgb2hsv)) df = pd.DataFrame() df['RGB'] = lst1 df['HSV'] = lst2 df['name'] = lst3 return df
def get_palettecolvals(palette, depth, target_cs='hsv'): """ convert palette's bgr colors into any color space values """ bgr_array = np.array(eval(palette.loc['bgr_colors'][depth])) rgb_array = convert_array(bgr_array, origin='BGR', target='RGB') lab_array = convert_array(np.array(rgb_array) / 255, origin='RGB', target='LAB') if target_cs == 'rgb': rgb_list = [list(i) for i in rgb_array] return rgb_list elif target_cs == 'hsv': hsv_array = [] for i in rgb_array: rgb = np.array(i) rgbi = np.array([[rgb / 255]], dtype=np.float32) hsv = cv2.cvtColor(rgbi, cv2.COLOR_RGB2HSV) hsv = hsv[0, 0] hsv_array.append(hsv) hsv_list = [list(i) for i in hsv_array] return hsv_list elif target_cs == 'lab': lab_array = [] for idn, rgb in enumerate(rgb_array): rgb = np.array(rgb) rgbi = np.array([[rgb / 255]], dtype=np.float32) lab = cv2.cvtColor(rgbi, cv2.COLOR_RGB2LAB) lab = lab[0, 0] lab_array.append(lab) lab_list = [i.tolist() for i in lab_array] return lab_list elif target_cs == 'lch': lch_array = [] for idn, lab in enumerate(lab_array): lch = convert_color(lab, "LAB", "LCH") lch = np.array(lch) lch_array.append(lch) lch_list = [i.tolist() for i in lch_array] return lch_list
def make_lab_lch_colorwheel_colors(lablch_twelve): """ build pd frame with lab lch for 12 30°-step hues """ lst = [] lst2 = [] lst3 = [] lst4 = [ 'fuchsia', 'red', 'terracotta', 'olive', 'kelly', 'leaf', 'teal', 'atoll', 'azure', 'blue', 'purple', 'lilac' ] for i in lablch_twelve.items(): # {'LCH': i[0]} lst.append(i[0]) lst2.append(i[1]) for i in range(len(lst2)): lst3.append(convert_color(lst2[i], "RGB", "LAB", rgb2lab)) df = pd.DataFrame() df['LCH'] = lst df['Lab'] = lst2 df['RGB'] = lst3 df['name'] = lst4 return df