camera / app.py
riteshcp's picture
Update app.py
4d763b5 verified
Raw
History Blame Contribute Delete
4.72 kB
import cv2
import gradio as gr
import os
# ग्लोबल वेरिएबल्स
video_path = ""
live_mode = False
# अस्थायी फ़ोल्डर में वीडियो सहेजने के लिए पथ सेट करें
save_dir = "/tmp/videos"
if not os.path.exists(save_dir):
os.makedirs(save_dir)
def upload_video(uploaded_video):
global video_path, live_mode
live_mode = False
video_path = os.path.join(save_dir, "uploaded_video.mp4")
# वीडियो को अस्थायी पथ पर कॉपी करें
with open(video_path, "wb") as f:
f.write(uploaded_video.read())
return f"वीडियो अपलोड हुआ: {video_path}"
def start_live_feed():
global live_mode, video_path
live_mode = True
video_path = 0 # कैमरा का उपयोग करने के लिए 0 सेट करें
return "लाइव फीड शुरू हो गया"
def process_video():
if video_path == "":
return "कोई वीडियो अपलोड नहीं हुआ है या लाइव मोड सक्रिय नहीं है। कृपया पहले वीडियो अपलोड करें या लाइव मोड सक्रिय करें।", None
cap = cv2.VideoCapture(video_path)
if not cap.isOpened():
return "त्रुटि: वीडियो खोलने में असमर्थ", None
processed_frame = None
while True:
ret, frame = cap.read()
if not ret:
break
# यहाँ हम मानते हैं कि लाइव फीड में चार्ट होते हैं। चार्ट को पहचानने के लिए ह्यू और एज डिटेक्शन का उपयोग कर सकते हैं।
gray_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray_frame, 50, 150)
# ये सिर्फ एक उदाहरण है; आप इसे ट्रेडिंग संकेतकों और चार्ट पैटर्न की पहचान के लिए बढ़ा सकते हैं।
contours, _ = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
for cnt in contours:
x, y, w, h = cv2.boundingRect(cnt)
cv2.rectangle(frame, (x, y), (x+w, y+h), (255, 0, 0), 2)
processed_frame = frame # अंतिम फ्रेम जिसमें डिटेक्शन हुआ हो
cap.release()
if processed_frame is not None:
processed_image_path = os.path.join(save_dir, "processed_frame.png")
cv2.imwrite(processed_image_path, processed_frame)
return None, processed_image_path
else:
return "कोई चार्ट नहीं मिला या वीडियो खाली है।", None
def end_processing():
global video_path, live_mode
video_path = ""
live_mode = False
return "प्रसंस्करण समाप्त हुआ। आप अब नया वीडियो अपलोड कर सकते हैं या लाइव फीड शुरू कर सकते हैं।"
# Gradio UI
iface = gr.Blocks()
with iface:
gr.Markdown("## वीडियो और लाइव फीड चार्ट एनालिसिस टूल")
with gr.Row():
video_input = gr.Video(label="वीडियो अपलोड करें")
upload_button = gr.Button("वीडियो अपलोड करें")
live_button = gr.Button("लाइव फीड शुरू करें")
upload_output = gr.Textbox(label="अपलोड स्थिति")
upload_button.click(upload_video, inputs=video_input, outputs=upload_output)
live_button.click(start_live_feed, outputs=upload_output)
with gr.Row():
process_button = gr.Button("वीडियो प्रोसेस करें")
end_button = gr.Button("प्रसंस्करण समाप्त करें")
process_output = gr.Image(label="प्रसंस्कृत वीडियो")
process_status = gr.Textbox(label="प्रसंस्करण स्थिति")
end_output = gr.Textbox(label="प्रसंस्करण स्थिति")
process_button.click(process_video, outputs=[process_status, process_output])
end_button.click(end_processing, outputs=end_output)
iface.launch()