Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -127,23 +127,60 @@ with gr.Blocks(theme=gr.themes.Soft(primary_hue="blue", secondary_hue="sky"), cs
|
|
| 127 |
with gr.Group():
|
| 128 |
gr.Markdown("## 🗂️ ارفع ملفات السيناريو")
|
| 129 |
|
| 130 |
-
#
|
| 131 |
api_rgb_image_path = gr.Image(type="filepath", label="صورة الكاميرا الأمامية (RGB)")
|
| 132 |
-
|
| 133 |
api_measurements_path = gr.File(label="ملف القياسات (JSON)", type="filepath")
|
| 134 |
api_target_point_list = gr.JSON(label="📍 النقطة المستهدفة (x, y) بالنسبة للسيارة", value=[0.0, 100.0])
|
| 135 |
api_run_button = gr.Button("🚀 أرسل البيانات للمعالجة", variant="primary")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 136 |
with gr.Group():
|
| 137 |
gr.Markdown("### ✨ أمثلة جاهزة")
|
| 138 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 139 |
gr.Examples(
|
| 140 |
examples=[
|
| 141 |
-
|
| 142 |
-
[
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 143 |
],
|
| 144 |
-
|
| 145 |
-
|
|
|
|
|
|
|
|
|
|
| 146 |
)
|
|
|
|
|
|
|
|
|
|
| 147 |
|
| 148 |
# -- العمود الأيمن: المخرجات --
|
| 149 |
with gr.Column(scale=2):
|
|
@@ -153,6 +190,7 @@ with gr.Blocks(theme=gr.themes.Soft(primary_hue="blue", secondary_hue="sky"), cs
|
|
| 153 |
api_control_json = gr.JSON(label="أوامر التحكم (��ن الـ API)")
|
| 154 |
|
| 155 |
# --- ربط منطق الواجهة ---
|
|
|
|
| 156 |
start_session_button.click(
|
| 157 |
fn=start_new_session,
|
| 158 |
inputs=None,
|
|
@@ -170,6 +208,5 @@ with gr.Blocks(theme=gr.themes.Soft(primary_hue="blue", secondary_hue="sky"), cs
|
|
| 170 |
inputs=[session_id_state, api_rgb_image_path, api_measurements_path, api_target_point_list],
|
| 171 |
outputs=[api_output_image, api_control_json],
|
| 172 |
)
|
| 173 |
-
|
| 174 |
if __name__ == "__main__":
|
| 175 |
demo.queue().launch(debug=True)
|
|
|
|
| 127 |
with gr.Group():
|
| 128 |
gr.Markdown("## 🗂️ ارفع ملفات السيناريو")
|
| 129 |
|
| 130 |
+
# استخدام gr.Image لعرض الصور المصغرة في الأمثلة
|
| 131 |
api_rgb_image_path = gr.Image(type="filepath", label="صورة الكاميرا الأمامية (RGB)")
|
|
|
|
| 132 |
api_measurements_path = gr.File(label="ملف القياسات (JSON)", type="filepath")
|
| 133 |
api_target_point_list = gr.JSON(label="📍 النقطة المستهدفة (x, y) بالنسبة للسيارة", value=[0.0, 100.0])
|
| 134 |
api_run_button = gr.Button("🚀 أرسل البيانات للمعالجة", variant="primary")
|
| 135 |
+
|
| 136 |
+
# --- [تعديل 1] إضافة مكونات نصية مخفية ---
|
| 137 |
+
# هذه المكونات لن تظهر في الواجهة الرئيسية، ولكنها ستظهر كأعمدة في الأمثلة
|
| 138 |
+
with gr.Row(visible=False):
|
| 139 |
+
example_speed = gr.Textbox(label="Speed")
|
| 140 |
+
example_pos = gr.Textbox(label="Position")
|
| 141 |
+
|
| 142 |
with gr.Group():
|
| 143 |
gr.Markdown("### ✨ أمثلة جاهزة")
|
| 144 |
+
# التحقق من وجود مجلد الأمثلة لتجنب الأخطاء
|
| 145 |
+
if os.path.isdir(EXAMPLES_DIR) and \
|
| 146 |
+
os.path.exists(os.path.join(EXAMPLES_DIR, "sample1", "measurements.json")) and \
|
| 147 |
+
os.path.exists(os.path.join(EXAMPLES_DIR, "sample2", "measurements.json")):
|
| 148 |
+
|
| 149 |
+
# --- [تعديل 2] توسيع قائمة الأمثلة ---
|
| 150 |
+
# قراءة بيانات المثال الأول
|
| 151 |
+
with open(os.path.join(EXAMPLES_DIR, "sample1", "measurements.json"), 'r') as f:
|
| 152 |
+
data1 = json.load(f)
|
| 153 |
+
|
| 154 |
+
# قراءة بيانات المثال الثاني
|
| 155 |
+
with open(os.path.join(EXAMPLES_DIR, "sample2", "measurements.json"), 'r') as f:
|
| 156 |
+
data2 = json.load(f)
|
| 157 |
+
|
| 158 |
gr.Examples(
|
| 159 |
examples=[
|
| 160 |
+
# بيانات المثال الأول
|
| 161 |
+
[
|
| 162 |
+
os.path.join(EXAMPLES_DIR, "sample1", "rgb.jpg"),
|
| 163 |
+
os.path.join(EXAMPLES_DIR, "sample1", "measurements.json"),
|
| 164 |
+
str(data1.get('speed', 'N/A')), # القيمة للعمود الإضافي الأول
|
| 165 |
+
str([data1.get('x', 'N/A'), data1.get('y', 'N/A')]) # القيمة للعمود الإضافي الثاني
|
| 166 |
+
],
|
| 167 |
+
# بيانات المثال الثاني
|
| 168 |
+
[
|
| 169 |
+
os.path.join(EXAMPLES_DIR, "sample2", "rgb.jpg"),
|
| 170 |
+
os.path.join(EXAMPLES_DIR, "sample2", "measurements.json"),
|
| 171 |
+
str(data2.get('speed', 'N/A')),
|
| 172 |
+
str([data2.get('x', 'N/A'), data2.get('y', 'N/A')])
|
| 173 |
+
]
|
| 174 |
],
|
| 175 |
+
# --- [تعديل 3] ربط البيانات بالمكونات ---
|
| 176 |
+
inputs=[api_rgb_image_path, api_measurements_path, example_speed, example_pos],
|
| 177 |
+
label="اختر سيناريو اختبار",
|
| 178 |
+
# تغيير عناوين الأعمدة
|
| 179 |
+
headers=["صورة الكاميرا", "ملف القياسات", "السرعة (m/s)", "الإحداثيات"]
|
| 180 |
)
|
| 181 |
+
else:
|
| 182 |
+
gr.Markdown("لم يتم العثور على مجلد الأمثلة (`examples`) أو محتوياته.")
|
| 183 |
+
|
| 184 |
|
| 185 |
# -- العمود الأيمن: المخرجات --
|
| 186 |
with gr.Column(scale=2):
|
|
|
|
| 190 |
api_control_json = gr.JSON(label="أوامر التحكم (��ن الـ API)")
|
| 191 |
|
| 192 |
# --- ربط منطق الواجهة ---
|
| 193 |
+
# هذا الجزء لا يحتاج إلى تعديل
|
| 194 |
start_session_button.click(
|
| 195 |
fn=start_new_session,
|
| 196 |
inputs=None,
|
|
|
|
| 208 |
inputs=[session_id_state, api_rgb_image_path, api_measurements_path, api_target_point_list],
|
| 209 |
outputs=[api_output_image, api_control_json],
|
| 210 |
)
|
|
|
|
| 211 |
if __name__ == "__main__":
|
| 212 |
demo.queue().launch(debug=True)
|