|
|
| 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) |