Spaces:
Runtime error
Runtime error
| import cv2 | |
| import streamlit as st | |
| from streamlit_webrtc import webrtc_streamer | |
| import numpy as np | |
| from PIL import Image | |
| from Moildev import Moildev | |
| import threading | |
| moildev = Moildev('Raspi_Cam.json') | |
| def brighten_image(image, amount): | |
| img_bright = cv2.convertScaleAbs(image, beta=amount) | |
| return img_bright | |
| def anypoint_image(image, alpha, beta, zoom, mode): | |
| any_image = moildev.anypoint(image, alpha, beta, zoom, mode) | |
| return any_image | |
| def main_loop(): | |
| st.title("MoilDev Demo App") | |
| st.subheader("This app allows you to play with Image filters!") | |
| st.text("We use OpenCV and Streamlit for this demo") | |
| # radio | |
| source = st.sidebar.radio('Sources:', ('image','video')) | |
| if source == 'image': | |
| # slider | |
| zoom = st.sidebar.slider("Zoom", min_value=1.0, max_value=3.5, value=1.2) | |
| alpha = st.sidebar.slider("Alpha", min_value=0.0, max_value=180.0, value=60.0) | |
| beta = st.sidebar.slider("Beta", min_value=0.0, max_value=180.0, value=60.0) | |
| brightness_amount = st.sidebar.slider("Brightness", min_value=-50, max_value=50, value=0) | |
| # checkbox | |
| mode_filter = st.sidebar.checkbox('Car Mode') | |
| image_file = st.file_uploader("Upload Your Image", type=['jpg', 'png', 'jpeg']) | |
| if not image_file: | |
| return None | |
| original_image = Image.open(image_file) | |
| original_image = np.array(original_image) | |
| if mode_filter == 1: | |
| processed_image = anypoint_image(original_image, alpha=alpha, beta=beta, zoom=zoom, mode=1) | |
| else: | |
| processed_image = anypoint_image(original_image, alpha=alpha, beta=beta, zoom=zoom, mode=2) | |
| processed_image = brighten_image(processed_image, brightness_amount) | |
| st.text("Original Image vs Processed Image") | |
| st.image([original_image, processed_image]) | |
| if source == 'video': | |
| # slider | |
| zoom = st.sidebar.slider("Zoom", min_value=1.0, max_value=3.5, value=1.2) | |
| alpha = st.sidebar.slider("Alpha", min_value=0.0, max_value=180.0, value=60.0) | |
| beta = st.sidebar.slider("Beta", min_value=0.0, max_value=180.0, value=60.0) | |
| # checkbox | |
| mode_filter = st.sidebar.checkbox('Car Mode') | |
| lock = threading.Lock() | |
| img_container = {"img": None} | |
| def video_frame_callback(frame): | |
| img = frame.to_ndarray(format="bgr24") | |
| with lock: | |
| img_container["img"] = img | |
| return frame | |
| ctx = webrtc_streamer(key="example", video_frame_callback=video_frame_callback) | |
| vsn_place = st.empty() | |
| while ctx.state.playing: | |
| cv2.waitKey(10) | |
| with lock: | |
| img = img_container["img"] | |
| if img is None: | |
| continue | |
| if mode_filter == 1: | |
| processed_image = anypoint_image(img, alpha=alpha, beta=beta, zoom=zoom, mode=1) | |
| vsn_place.image(processed_image) | |
| else: | |
| processed_image = anypoint_image(img, alpha=alpha, beta=beta, zoom=zoom, mode=2) | |
| vsn_place.image(processed_image) | |
| if __name__ == '__main__': | |
| main_loop() | |