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()