|
|
|
import streamlit as st |
|
import pandas as pd |
|
import matplotlib.pyplot as plt |
|
import io |
|
|
|
st.title("Webcam Color Detection Charting") |
|
|
|
uploaded_file = st.file_uploader("Choose a CSV file", type="csv") |
|
|
|
time_frame_options = [ |
|
"All", |
|
"1 second", |
|
"5 seconds", |
|
"10 seconds", |
|
"30 seconds", |
|
"1 minute", |
|
"5 minutes", |
|
"10 minutes", |
|
"30 minutes", |
|
"60 minutes", |
|
] |
|
time_frame = st.selectbox("Data Time Frame", time_frame_options) |
|
|
|
if uploaded_file is not None: |
|
|
|
data = pd.read_csv(uploaded_file) |
|
|
|
|
|
if time_frame != "All": |
|
seconds = { |
|
"1 second": 1, |
|
"5 seconds": 5, |
|
"10 seconds": 10, |
|
"30 seconds": 30, |
|
"1 minute": 60, |
|
"5 minutes": 300, |
|
"10 minutes": 600, |
|
"30 minutes": 1800, |
|
"60 minutes": 3600, |
|
} |
|
data['timestamp'] = pd.to_datetime(data['timestamp'], unit='ms') |
|
data.set_index('timestamp', inplace=True) |
|
data = data.resample(f"{seconds[time_frame]}S").mean().dropna().reset_index() |
|
|
|
|
|
fig, axes = plt.subplots(2, 1, figsize=(10, 8)) |
|
|
|
|
|
axes[0].plot(data['R'], 'r', label='R') |
|
axes[0].plot(data['G'], 'g', label='G') |
|
axes[0].plot(data['B'], 'b', label='B') |
|
axes[0].legend(loc='upper right') |
|
axes[0].set_title('RGB Values') |
|
|
|
|
|
axes[1].plot(data['H'], 'r', label='H') |
|
axes[1].plot(data['S'], 'g', label='S') |
|
axes[1].plot(data['V'], 'b', label='V') |
|
axes[1].legend(loc='upper right') |
|
axes[1].set_title('HSV Values') |
|
|
|
st.pyplot(fig) |
|
|