import cv2
import numpy as np


# Step 1: Read the file
with open('rgb.txt', 'r') as file:
    content = file.read().strip()

# Step 2: Split the content by comma
fr, fg, fb, filename = content.split(',')

# Step 3: Convert RGB values to integers
fr = int(fr)
fg = int(fg)
fb = int(fb)

# Now you have the variables
print(f"Red: {fr}, Green: {fg}, Blue: {fb}, Filename: {filename}")





def create_lut(curve_points):
    lut = np.arange(256, dtype=np.uint8)
    x = list(curve_points.keys())
    y = list(curve_points.values())

    for i in range(256):
        lut[i] = np.interp(i, x, y)

    return lut


def apply_curves(image, curve_r, curve_g, curve_b):
    lut_r = create_lut(curve_r)
    lut_g = create_lut(curve_g)
    lut_b = create_lut(curve_b)

    # Split image into channels
    r, g, b = cv2.split(image)

    # Apply LUTs to each channel
    r = cv2.LUT(r, lut_r)
    g = cv2.LUT(g, lut_g)
    b = cv2.LUT(b, lut_b)

    # Merge channels back
    return cv2.merge((r, g, b))


# Define curve points
curve_b = {0: 0, 139: fr, 255: 255}
curve_g = {0: 0, 139: fg, 255: 255}
curve_r = {0: 0, 139: fb, 255: 255}

# Read input image
#img = cv2.imread('G7RGB.jpg')
img = cv2.imread(filename)
# Apply curve adjustments
adjusted_img = apply_curves(img, curve_r, curve_g, curve_b)

# Save the output image
cv2.imwrite('fix-'+filename, adjusted_img)
