Spaces:
Build error
Build error
File size: 2,849 Bytes
ae8a7b7 43097e0 40280ea 57034fc 5cb1e06 3593298 43097e0 3593298 aef2e78 3593298 aef2e78 40280ea aef2e78 43097e0 40280ea aef2e78 3593298 40280ea 3593298 edf8ac9 3593298 aef2e78 3593298 aef2e78 3593298 aef2e78 edf8ac9 aef2e78 43097e0 40280ea |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
import streamlit as st
import cv2
import numpy as np
import datetime
import os
import time
import base64
import re
import glob
from camera_input_live import camera_input_live
# Set wide layout
st.set_page_config(layout="wide")
# Decorator for caching images
@st.cache(allow_output_mutation=True)
def get_image_count():
return {'count': 0}
# Function Definitions for Camera Feature
def save_image(image, image_count):
timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
filename = f"captured_image_{timestamp}_{image_count['count']}.png"
image_count['count'] += 1
bytes_data = image.getvalue()
cv2_img = cv2.imdecode(np.frombuffer(bytes_data, np.uint8), cv2.IMREAD_COLOR)
cv2.imwrite(filename, cv2_img)
return filename
# Other function definitions...
# Main Function
def main():
# Layout Configuration
col1, col2, col3 = st.columns([2, 3, 5])
# Camera Section
with col1:
st.title("Real-Time Camera Stream")
st.header("QR code reader ready.")
snapshot_interval = st.slider("Snapshot Interval (seconds)", 1, 10, 5)
image_placeholder = st.empty()
if 'captured_images' not in st.session_state:
st.session_state['captured_images'] = []
if 'last_captured' not in st.session_state:
st.session_state['last_captured'] = time.time()
image = camera_input_live()
if image is not None:
image_placeholder.image(image)
if time.time() - st.session_state['last_captured'] > snapshot_interval:
image_count = get_image_count()
filename = save_image(image, image_count)
st.session_state['captured_images'].append(filename)
st.session_state['last_captured'] = time.time()
sidebar_html = "<div style='display:flex;flex-direction:column;'>"
for img_file in st.session_state['captured_images']:
image_base64 = get_image_base64(img_file)
sidebar_html += f"<img src='data:image/png;base64,{image_base64}' style='width:100px;'><br>"
sidebar_html += "</div>"
st.sidebar.markdown("## Captured Images")
st.sidebar.markdown(sidebar_html, unsafe_allow_html=True)
# JavaScript Timer
st.markdown(f"<script>setInterval(function() {{ document.getElementById('timer').innerHTML = new Date().toLocaleTimeString(); }}, 1000);</script><div>Current Time: <span id='timer'></span></div>", unsafe_allow_html=True)
# Chord Sheet Section
with col2:
# ... (Chord Sheet section remains unchanged) ...
# Trigger a rerun only when the snapshot interval is reached
if 'last_captured' in st.session_state and time.time() - st.session_state['last_captured'] > snapshot_interval:
st.experimental_rerun()
if __name__ == "__main__":
main()
|