File size: 4,723 Bytes
91ea854 4d763b5 91ea854 64718b8 91ea854 64718b8 91ea854 4d763b5 e26e7a2 91ea854 64718b8 4d763b5 64718b8 91ea854 64718b8 0f05b5a 91ea854 0f05b5a 91ea854 4d763b5 91ea854 64718b8 91ea854 64718b8 91ea854 64718b8 91ea854 4d763b5 91ea854 0f05b5a 91ea854 64718b8 91ea854 64718b8 91ea854 64718b8 91ea854 64718b8 c7c79b3 91ea854 64718b8 91ea854 64718b8 0f05b5a 64718b8 91ea854 0f05b5a 91ea854 0f05b5a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | 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()
|