|
import streamlit as st |
|
import cv2 |
|
from PIL import Image |
|
import numpy as np |
|
from imutils.video import VideoStream |
|
import pikepdf |
|
import fpdf |
|
import fitz |
|
import vidgear.gears |
|
|
|
|
|
st.title("๐ Impressive Library Demo Extravaganza") |
|
st.write("Watch these libraries flex their muscles with live demos producing real outputs!") |
|
|
|
|
|
def demo_pikepdf(): |
|
pdf = pikepdf.Pdf.new() |
|
pdf.pages.append(pikepdf.Page(pikepdf.Dictionary())) |
|
pdf.save("demo_pikepdf.pdf") |
|
return "demo_pikepdf.pdf" |
|
|
|
def demo_fpdf(): |
|
pdf = fpdf.FPDF() |
|
pdf.add_page() |
|
pdf.set_font("Arial", size=12) |
|
pdf.cell(200, 10, txt="FPDF rocks!", ln=True) |
|
pdf.output("demo_fpdf.pdf") |
|
return "demo_fpdf.pdf" |
|
|
|
def demo_pymupdf(): |
|
doc = fitz.open() |
|
page = doc.new_page() |
|
page.insert_text((100, 100), "Pymupdf shines!") |
|
doc.save("demo_pymupdf.pdf") |
|
return "demo_pymupdf.pdf" |
|
|
|
def demo_opencv_image(): |
|
cap = cv2.VideoCapture(0) |
|
ret, frame = cap.read() |
|
if ret: |
|
cv2.imwrite("demo_opencv.jpg", frame) |
|
cap.release() |
|
return "demo_opencv.jpg" |
|
cap.release() |
|
return None |
|
|
|
def demo_imutils(): |
|
vs = VideoStream(src=0).start() |
|
frame = vs.read() |
|
vs.stop() |
|
if frame is not None: |
|
cv2.imwrite("demo_imutils.jpg", cv2.cvtColor(frame, cv2.COLOR_RGB2BGR)) |
|
return "demo_imutils.jpg" |
|
return None |
|
|
|
def demo_vidgear(): |
|
stream = vidgear.gears.CamGear(source=0).start() |
|
frame = stream.read() |
|
stream.stop() |
|
if frame is not None: |
|
cv2.imwrite("demo_vidgear.jpg", frame) |
|
return "demo_vidgear.jpg" |
|
return None |
|
|
|
|
|
st.sidebar.header("๐ฎ Demo Controls") |
|
demo_type = st.sidebar.selectbox("Choose a Demo Category", ["PDF", "Image Capture", "Video Capture"]) |
|
|
|
|
|
if demo_type == "PDF": |
|
st.subheader("๐ PDF Powerhouse") |
|
demo = st.selectbox("Pick a PDF Demo", ["pikepdf", "fpdf2", "pymupdf"]) |
|
if st.button("Run PDF Demo"): |
|
with st.spinner("Running demo..."): |
|
try: |
|
if demo == "pikepdf": |
|
result = demo_pikepdf() |
|
st.download_button("Download PDF", open(result, "rb").read(), file_name=result) |
|
elif demo == "fpdf2": |
|
result = demo_fpdf() |
|
st.download_button("Download PDF", open(result, "rb").read(), file_name=result) |
|
elif demo == "pymupdf": |
|
result = demo_pymupdf() |
|
st.download_button("Download PDF", open(result, "rb").read(), file_name=result) |
|
except Exception as e: |
|
st.error(f"Demo failed: {str(e)}") |
|
|
|
|
|
elif demo_type == "Image Capture": |
|
st.subheader("๐ธ Image Snappers") |
|
demo = st.selectbox("Pick an Image Demo", ["opencv-python", "imutils"]) |
|
if st.button("Run Image Demo"): |
|
with st.spinner("Capturing image..."): |
|
try: |
|
if demo == "opencv-python": |
|
result = demo_opencv_image() |
|
if result: |
|
st.image(result, caption="Snapped with OpenCV!") |
|
else: |
|
st.error("Camera not detected!") |
|
elif demo == "imutils": |
|
result = demo_imutils() |
|
if result: |
|
st.image(result, caption="Snapped with Imutils!") |
|
else: |
|
st.error("Camera not detected!") |
|
except Exception as e: |
|
st.error(f"Demo failed: {str(e)}") |
|
|
|
|
|
elif demo_type == "Video Capture": |
|
st.subheader("๐ฅ Video Vanguards") |
|
demo = st.selectbox("Pick a Video Demo", ["opencv-python", "vidgear"]) |
|
if st.button("Run Video Demo"): |
|
with st.spinner("Capturing video frame..."): |
|
try: |
|
if demo == "opencv-python": |
|
result = demo_opencv_image() |
|
if result: |
|
st.image(result, caption="Frame from OpenCV Video!") |
|
else: |
|
st.error("Camera not detected!") |
|
elif demo == "vidgear": |
|
result = demo_vidgear() |
|
if result: |
|
st.image(result, caption="Frame from VidGear Video!") |
|
else: |
|
st.error("Camera not detected!") |
|
except Exception as e: |
|
st.error(f"Demo failed: {str(e)}") |
|
|
|
|
|
st.write("### Results") |
|
st.write("Check out your impressive outputs above!") |