Skip to content

Commit 63798f4

Browse files
committed
1. added init file to both widget & utils subdirectory, 2. modified the export file to handel previous commit {29cc0c6}. 3: removed one issues
1 parent 29cc0c6 commit 63798f4

File tree

10 files changed

+131
-218
lines changed

10 files changed

+131
-218
lines changed
File renamed without changes.
File renamed without changes.

labelvim/layout copy.py renamed to labelvim/Designer/layout.py

Lines changed: 73 additions & 199 deletions
Large diffs are not rendered by default.
File renamed without changes.
File renamed without changes.
File renamed without changes.

labelvim/labelvim/utils/__init__.py

Whitespace-only changes.

labelvim/labelvim/widgets/__init__.py

Whitespace-only changes.

labelvim/labelvim/widgets/export_file.py

Lines changed: 36 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -187,22 +187,31 @@ def _generate_yolov5_image_labels_and_masks(self, file_name):
187187
cv2.putText(mask, self.label_list[label], (bbox[0], bbox[1]), cv2.FONT_HERSHEY_SIMPLEX, 1, color, 2)
188188
elif self.annotation_type == ANNOTATION_TYPE.POLYGON:
189189
segmentation = annotation['segmentation']
190-
yolov5_segmentation = self._convert_to_yolov5_segmentation_format(segmentation, image_width, image_height)
191-
label_txt.write(f"{label} {yolov5_segmentation}\n")
190+
color = random_colors_palette[label].tolist()
191+
instance_color = random.choice(random_colors_palette.tolist())
192+
for poly in segmentation:
193+
yolov5_segmentation = self._convert_to_yolov5_segmentation_format(poly, image_width, image_height)
194+
label_txt.write(f"{label} {yolov5_segmentation}\n")
195+
poly = np.array(poly).reshape(-1, 2)
196+
poly = poly.astype(np.int32)
197+
if self.include_mask:
198+
199+
cv2.fillPoly(mask, [poly], color)
200+
# cv2.rectangle(mask, (bbox[0], bbox[1]), (bbox[0]+bbox[2], bbox[1]+bbox[3]), color, 2)
201+
# cv2.putText(mask, self.label_list[label], (bbox[0], bbox[1]), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
202+
203+
if self.include_instance:
204+
cv2.fillPoly(instance_image, [poly], instance_color)
205+
# cv2.rectangle(instance_image, (bbox[0], bbox[1]), (bbox[0]+bbox[2], bbox[1]+bbox[3]), color, 2)
206+
# cv2.putText(instance_image, self.label_list[label], (bbox[0], bbox[1]), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,0), 2)
192207
bbox = annotation['bbox']
193-
segmentation = np.array(segmentation).reshape(-1, 2)
194-
segmentation = segmentation.astype(np.int32)
208+
# bbox = annotation['bbox']
195209
if self.include_mask:
196-
color = random_colors_palette[label].tolist()
197-
cv2.fillPoly(mask, [segmentation], color)
198-
# cv2.rectangle(mask, (bbox[0], bbox[1]), (bbox[0]+bbox[2], bbox[1]+bbox[3]), color, 2)
199-
# cv2.putText(mask, self.label_list[label], (bbox[0], bbox[1]), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 255, 255), 2)
200-
210+
cv2.rectangle(mask, (bbox[0], bbox[1]), (bbox[0]+bbox[2], bbox[1]+bbox[3]), color, 2)
201211
if self.include_instance:
202-
color = random.choice(random_colors_palette.tolist())
203-
cv2.fillPoly(instance_image, [segmentation], color)
204-
# cv2.rectangle(instance_image, (bbox[0], bbox[1]), (bbox[0]+bbox[2], bbox[1]+bbox[3]), color, 2)
205-
# cv2.putText(instance_image, self.label_list[label], (bbox[0], bbox[1]), cv2.FONT_HERSHEY_SIMPLEX, 1, (0,0,0), 2)
212+
# bbox = annotation['bbox']
213+
cv2.rectangle(instance_image, (bbox[0], bbox[1]), (bbox[0]+bbox[2], bbox[1]+bbox[3]), instance_color, 2)
214+
206215
if self.include_img:
207216
# cv2.fillPoly(image, [segmentation], (0, 0, 255))
208217
# cv2.rectangle(image, (bbox[0], bbox[1]), (bbox[0]+bbox[2], bbox[1]+bbox[3]), (0, 0, 255), 2)
@@ -453,14 +462,22 @@ def _generate_masks_and_images(self, annotation_data, image_info):
453462
instance_image = np.zeros((image_info["height"], image_info["width"],3), dtype=np.uint8)
454463

455464
for annotation in annotation_data['annotations']:
456-
segmentation = np.array(annotation['segmentation']).reshape(-1, 2)
457-
segmentation = segmentation.astype(np.int32)
465+
color = random_colors_palette[annotation["category_id"]].tolist()
466+
instance_color = random.choice(random_colors_palette.tolist())
467+
for poly in annotation['segmentation']:
468+
segmentation = np.array(poly).reshape(-1, 2)
469+
segmentation = segmentation.astype(np.int32)
470+
if self.include_mask:
471+
cv2.fillPoly(mask, [segmentation], color)
472+
if self.include_instance:
473+
cv2.fillPoly(instance_image, [segmentation], instance_color)
474+
bbox = annotation['bbox']
458475
if self.include_mask:
459-
color = random_colors_palette[annotation["category_id"]].tolist()
460-
cv2.fillPoly(mask, [segmentation], 255)
476+
cv2.rectangle(mask, (bbox[0], bbox[1]), (bbox[0]+bbox[2], bbox[1]+bbox[3]), color, 2)
461477
if self.include_instance:
462-
color = random.choice(random_colors_palette.tolist())
463-
cv2.fillPoly(instance_image, [segmentation], color)
478+
# bbox = annotation['bbox']
479+
cv2.rectangle(instance_image, (bbox[0], bbox[1]), (bbox[0]+bbox[2], bbox[1]+bbox[3]), instance_color, 2)
480+
464481

465482
if self.include_img:
466483
image = cv2.addWeighted(image, 0.5, mask, 0.5, 0)

labelvim/labelvim/widgets/label_pupop.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ def __init__(self, items: list, data: list, annotation_type: Enum, update_label_
1414
self.annotation_type = annotation_type
1515
self.selected_item = None
1616
self.selected_index = None
17+
self.text_filter = False
1718
self.select_id = -1
1819
self.id = [-1]
1920
self.layout = QVBoxLayout(self)
@@ -28,6 +29,7 @@ def __init__(self, items: list, data: list, annotation_type: Enum, update_label_
2829
line_edit_id_combo_layout.addWidget(label)
2930
self.id_combo = QComboBox(self)
3031
self.update_id_combo()
32+
self.id_combo.currentIndexChanged.connect(self.update_list_widget)
3133
# self.id_combo.addItems([str(i) for i in self.id])
3234
line_edit_id_combo_layout.addWidget(self.id_combo)
3335
self.layout.addLayout(line_edit_id_combo_layout)
@@ -58,6 +60,7 @@ def update_id_combo(self):
5860
self.id_combo.addItems(self.id)
5961

6062
def filter_items(self, text):
63+
self.text_filter = True
6164
"""Filter the items in the list based on the text."""
6265
self.list_widget.clear()
6366
filtered_items = [item for item in self.items if text.lower() in item.lower()]
@@ -67,6 +70,25 @@ def filter_items(self, text):
6770
self.id = [str(-1)]
6871
self.id = self.id + [str(i['id']) for item in filtered_items for i in self.data if item.lower() == self.items[i["category_id"]].lower()]
6972
self.id_combo.addItems(self.id)
73+
self.text_filter = False
74+
75+
def update_list_widget(self):
76+
if not self.text_filter:
77+
self.list_widget.clear()
78+
if self.id_combo.currentText() == str(-1):
79+
self.list_widget.addItems(self.items)
80+
else:
81+
id = int(self.id_combo.currentText())
82+
print(f" id in labepuop: {id}")
83+
for i in self.data:
84+
if i["id"] == id:
85+
category_id = int(i["category_id"])
86+
break
87+
88+
# category_id = int(self.data[id]["category_id"])
89+
90+
self.list_widget.addItems([self.items[category_id]])
91+
# self.list_widget.addItems([item for item in self.items if item.lower() == self.items[int(self.id_combo.currentText())].lower()])
7092

7193

7294
def add_item(self):

0 commit comments

Comments
 (0)