Spaces:
Sleeping
Sleeping
# import cv2 | |
# import streamlit as st | |
# from streamlit_webrtc import webrtc_streamer, VideoHTMLAttributes | |
# import numpy as np | |
# import av | |
# st.title("OpenCV Filters on Video Stream") | |
# filter = "none" | |
# def transform(frame: av.VideoFrame): | |
# img = frame.to_ndarray(format="bgr24") | |
# if filter == "blur": | |
# img = cv2.GaussianBlur(img, (21, 21), 0) | |
# elif filter == "canny": | |
# img = cv2.cvtColor(cv2.Canny(img, 100, 200), cv2.COLOR_GRAY2BGR) | |
# elif filter == "grayscale": | |
# # We convert the image twice because the first conversion returns a 2D array. | |
# # the second conversion turns it back to a 3D array. | |
# img = cv2.cvtColor(cv2.cvtColor(img, cv2.COLOR_BGR2GRAY), cv2.COLOR_GRAY2BGR) | |
# elif filter == "sepia": | |
# kernel = np.array( | |
# [[0.272, 0.534, 0.131], [0.349, 0.686, 0.168], [0.393, 0.769, 0.189]] | |
# ) | |
# img = cv2.transform(img, kernel) | |
# elif filter == "invert": | |
# img = cv2.bitwise_not(img) | |
# elif filter == "none": | |
# pass | |
# return av.VideoFrame.from_ndarray(img, format="bgr24") | |
# col1, col2, col3, col4, col5, col6 = st.columns([1, 1, 1, 1, 1, 1]) | |
# with col1: | |
# if st.button("None"): | |
# filter = "none" | |
# with col2: | |
# if st.button("Blur"): | |
# filter = "blur" | |
# with col3: | |
# if st.button("Grayscale"): | |
# filter = "grayscale" | |
# with col4: | |
# if st.button("Sepia"): | |
# filter = "sepia" | |
# with col5: | |
# if st.button("Canny"): | |
# filter = "canny" | |
# with col6: | |
# if st.button("Invert"): | |
# filter = "invert" | |
# webrtc_streamer( | |
# key="streamer", | |
# video_frame_callback=transform, | |
# sendback_audio=False | |
# ) | |
import streamlit as st | |
import cv2 | |
def main(): | |
st.set_page_config(page_title="Streamlit WebCam App") | |
st.title("Webcam Display Steamlit App") | |
st.caption("Powered by OpenCV, Streamlit") | |
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 | |
frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) | |
frame_placeholder.image(frame,channels="RGB") | |
if cv2.waitKey(1) & 0xFF == ord("q") or stop_button_pressed: | |
break | |
cap.release() | |
cv2.destroyAllWindows() | |
if __name__ == "__main__": | |
main() |