color_analyzer / app.py
reysarms's picture
app.py
caefe2a
raw
history blame
1.28 kB
import cv2
import numpy as np
import streamlit as st
from sklearn.cluster import KMeans
def get_dominant_color(image, k=1):
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
image = image.reshape((-1, 3))
kmeans = KMeans(n_clusters=k, random_state=0, n_init=10)
kmeans.fit(image)
dominant_color = kmeans.cluster_centers_[0].astype(int)
return tuple(dominant_color)
def is_warm_or_cool(color):
r, g, b = color
warm = (r > g and r > b)
return "Warm" if warm else "Cool"
def complementary_color(color):
r, g, b = color
return (255 - r, 255 - g, 255 - b)
st.title("VQA for Colors and Color Theory")
uploaded_file = st.file_uploader("Upload an image", type=["jpg", "png", "jpeg"])
if uploaded_file is not None:
file_bytes = np.asarray(bytearray(uploaded_file.read()), dtype=np.uint8)
image = cv2.imdecode(file_bytes, cv2.IMREAD_COLOR)
dominant = get_dominant_color(image)
comp_color = complementary_color(dominant)
st.image(cv2.cvtColor(image, cv2.COLOR_BGR2RGB), caption="Uploaded Image", use_column_width=True)
st.write(f"**Dominant Color:** {dominant}")
st.write(f"**Temperature:** This is a {is_warm_or_cool(dominant)} color.")
st.write(f"**Complementary Color:** {comp_color}")