import streamlit as st import cv2 import numpy as np def main(): st.set_page_config(page_title="Streamlit Webcam Canny Edge App") st.title("Webcam Canny Edge Detection App") st.caption("Powered by OpenCV, Streamlit") # Capture video from the webcam cap = cv2.VideoCapture(0) frame_placeholder = st.empty() stop_button_pressed = st.button("Stop") while cap.isOpened() and not stop_button_pressed: ret, frame = cap.read() if not ret: st.write("Video Capture Ended") break # Convert the frame to grayscale gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Apply Canny edge detection edges = cv2.Canny(gray_frame, 100, 200) # Create an overlay of edges on the original frame edges_colored = cv2.cvtColor(edges, cv2.COLOR_GRAY2BGR) overlay = cv2.addWeighted(frame, 0.7, edges_colored, 0.3, 0) # Resize the frame for better display (smaller size) overlay_resized = cv2.resize(overlay, (320, 240)) # Change size here # Display the overlay frame_placeholder.image(overlay_resized, channels="BGR", caption="Webcam Feed with Canny Edges", use_column_width=True) # Break loop on 'q' key or stop button press if cv2.waitKey(1) & 0xFF == ord("q") or stop_button_pressed: break cap.release() cv2.destroyAllWindows() if __name__ == "__main__": main()