Ashegh-Sad-Warrior commited on
Commit
079b30d
1 Parent(s): c1832e6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +19 -25
app.py CHANGED
@@ -54,10 +54,10 @@ def detect_and_draw_image(input_image):
54
 
55
  # اجرای مدل روی تصویر با سطح اطمینان پایین‌تر برای اطمینان از شناسایی بیشتر اشیاء
56
  results = model.predict(source=input_image_np, conf=0.3)
57
- obb_results = results[0].obb
58
 
59
  # بررسی وجود جعبه‌های شناسایی شده
60
- if obb_results is None or len(obb_results.data) == 0:
61
  print("هیچ شیء شناسایی نشده است.")
62
  df = pd.DataFrame({
63
  'Label (English)': [],
@@ -70,23 +70,20 @@ def detect_and_draw_image(input_image):
70
  image_np = np.array(input_image.convert('RGB'))[:, :, ::-1] # تبدیل PIL به OpenCV
71
 
72
  counts = {}
73
- for obb, conf, cls in zip(obb_results.data.cpu().numpy(), obb_results.conf.cpu().numpy(), obb_results.cls.cpu().numpy()):
74
  # دسترسی به مختصات جعبه و اطمینان
75
- x_center, y_center, width, height, rotation = obb[:5]
76
- class_id = int(cls)
77
- confidence = float(conf)
78
 
79
  # دریافت برچسب‌های انگلیسی و فارسی
80
  label_en, label_fa = class_names.get(class_id, ('unknown', 'ناشناخته'))
81
  counts[label_en] = counts.get(label_en, 0) + 1
82
 
83
- # رسم جعبه چرخان با استفاده از OpenCV
84
- rect = ((x_center, y_center), (width, height), rotation * 180.0 / np.pi) # تبدیل رادیان به درجه
85
- box = cv2.boxPoints(rect)
86
- box = np.int0(box)
87
  color = colors.get(class_id, (0, 255, 0)) # استفاده از رنگ مشخص برای هر کلاس
88
- cv2.drawContours(image_np, [box], 0, color, 2)
89
- cv2.putText(image_np, f'{label_en}: {confidence:.2f}', (int(x_center), int(y_center)),
90
  cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 1, cv2.LINE_AA)
91
 
92
  # تبدیل تصویر به RGB برای Gradio
@@ -116,15 +113,15 @@ def detect_and_draw_video(video_path):
116
 
117
  frame = cv2.resize(frame, (640, 480))
118
  results = model.predict(source=frame, conf=0.3)
119
- obb_results = results[0].obb
120
 
121
- if obb_results is not None and len(obb_results.data) > 0:
122
- for obb, conf, cls in zip(obb_results.data.cpu().numpy(), obb_results.conf.cpu().numpy(), obb_results.cls.cpu().numpy()):
123
- x_center, y_center, width, height, rotation = obb[:5]
124
- class_id = int(cls)
125
- confidence = float(conf)
126
  label_en, label_fa = class_names.get(class_id, ('unknown', 'ناشناخته'))
127
- current_object = (label_en, int(x_center - width / 2), int(y_center - height / 2), int(x_center + width / 2), int(y_center + height / 2))
128
 
129
  # بررسی وجود شیء در لیست seen_objects
130
  if not any(existing[0] == label_en and
@@ -134,12 +131,9 @@ def detect_and_draw_video(video_path):
134
  overall_counts[label_en] = overall_counts.get(label_en, 0) + 1
135
 
136
  # رسم مستطیل و نام شیء بر روی فریم
137
- rect = ((x_center, y_center), (width, height), rotation * 180.0 / np.pi)
138
- box = cv2.boxPoints(rect)
139
- box = np.int0(box)
140
  color = colors.get(class_id, (0, 255, 0))
141
- cv2.drawContours(frame, [box], 0, color, 2)
142
- cv2.putText(frame, f"{label_en}: {confidence:.2f}", (int(x_center), int(y_center) - 10),
143
  cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 2)
144
 
145
  frames.append(frame)
@@ -184,4 +178,4 @@ video_interface = gr.Interface(
184
 
185
  # اجرای برنامه با استفاده از رابط کاربری تب‌دار
186
  app = gr.TabbedInterface([image_interface, video_interface], ["تشخیص تصویر", "تشخیص ویدئو"])
187
- app.launch(debug=True, share=True)
 
54
 
55
  # اجرای مدل روی تصویر با سطح اطمینان پایین‌تر برای اطمینان از شناسایی بیشتر اشیاء
56
  results = model.predict(source=input_image_np, conf=0.3)
57
+ detections = results[0].boxes
58
 
59
  # بررسی وجود جعبه‌های شناسایی شده
60
+ if detections is None or len(detections) == 0:
61
  print("هیچ شیء شناسایی نشده است.")
62
  df = pd.DataFrame({
63
  'Label (English)': [],
 
70
  image_np = np.array(input_image.convert('RGB'))[:, :, ::-1] # تبدیل PIL به OpenCV
71
 
72
  counts = {}
73
+ for box in detections:
74
  # دسترسی به مختصات جعبه و اطمینان
75
+ xmin, ymin, xmax, ymax = box.xyxy[0].tolist()
76
+ conf = box.conf[0].item()
77
+ class_id = int(box.cls[0].item())
78
 
79
  # دریافت برچسب‌های انگلیسی و فارسی
80
  label_en, label_fa = class_names.get(class_id, ('unknown', 'ناشناخته'))
81
  counts[label_en] = counts.get(label_en, 0) + 1
82
 
83
+ # رسم مستطیل با استفاده از OpenCV
 
 
 
84
  color = colors.get(class_id, (0, 255, 0)) # استفاده از رنگ مشخص برای هر کلاس
85
+ cv2.rectangle(image_np, (int(xmin), int(ymin)), (int(xmax), int(ymax)), color, 2)
86
+ cv2.putText(image_np, f'{label_en}: {conf:.2f}', (int(xmin), int(ymin) - 10),
87
  cv2.FONT_HERSHEY_SIMPLEX, 0.5, color, 1, cv2.LINE_AA)
88
 
89
  # تبدیل تصویر به RGB برای Gradio
 
113
 
114
  frame = cv2.resize(frame, (640, 480))
115
  results = model.predict(source=frame, conf=0.3)
116
+ detections = results[0].boxes
117
 
118
+ if detections is not None and len(detections) > 0:
119
+ for box in detections:
120
+ xmin, ymin, xmax, ymax = box.xyxy[0].tolist()
121
+ conf = box.conf[0].item()
122
+ class_id = int(box.cls[0].item())
123
  label_en, label_fa = class_names.get(class_id, ('unknown', 'ناشناخته'))
124
+ current_object = (label_en, int(xmin), int(ymin), int(xmax), int(ymax))
125
 
126
  # بررسی وجود شیء در لیست seen_objects
127
  if not any(existing[0] == label_en and
 
131
  overall_counts[label_en] = overall_counts.get(label_en, 0) + 1
132
 
133
  # رسم مستطیل و نام شیء بر روی فریم
 
 
 
134
  color = colors.get(class_id, (0, 255, 0))
135
+ cv2.rectangle(frame, (int(xmin), int(ymin)), (int(xmax), int(ymax)), color, 2)
136
+ cv2.putText(frame, f"{label_en}: {conf:.2f}", (int(xmin), int(ymin) - 10),
137
  cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 2)
138
 
139
  frames.append(frame)
 
178
 
179
  # اجرای برنامه با استفاده از رابط کاربری تب‌دار
180
  app = gr.TabbedInterface([image_interface, video_interface], ["تشخیص تصویر", "تشخیص ویدئو"])
181
+ app.launch(debug=True, share=True)