Spaces:
Running
Running
import cv2 | |
# Demo libs | |
from spiga.demo.visualize.layouts.plot_basics import BasicLayout | |
class BboxLayout(BasicLayout): | |
BasicLayout.thickness_dft['bbox'] = 2 | |
def __init__(self): | |
super().__init__() | |
def draw_bbox(self, canvas, bbox, score_thr=0, show_score=True, thick=None, color=BasicLayout.colors['blue']): | |
if thick is None: | |
thick = self.thickness['bbox'] | |
if bbox[4] > score_thr: | |
text = "{:.4f}".format(bbox[4]) | |
b = list(map(int, bbox)) | |
cv2.rectangle(canvas, (b[0], b[1]), (b[2], b[3]), color, thick) | |
if show_score: | |
self.draw_bbox_text(canvas, b, text, offset=(0, 12), color=color) | |
return canvas | |
def draw_bbox_line(self, canvas, bbox, score_thr=0, show_score=True, thick=None, color=BasicLayout.colors['blue']): | |
if thick is None: | |
thick = self.thickness['bbox'] | |
if bbox[4] > score_thr: | |
text = "{:.4f}".format(bbox[4]) | |
b = list(map(int, bbox)) | |
cv2.line(canvas, (b[0], b[1]), (b[0], b[1] + 15), color, thick) | |
cv2.line(canvas, (b[0], b[1]), (b[0] + 100, b[1]), color, thick) | |
if show_score: | |
self.draw_bbox_text(canvas, b, text, offset=(0, 12), color=color) | |
return canvas | |
def draw_bbox_text(self, canvas, bbox, text, offset=(0, 0), color=BasicLayout.colors['white']): | |
b = list(map(int, bbox)) | |
cx = b[0] + offset[0] | |
cy = b[1] + offset[1] | |
cv2.putText(canvas, text, (cx, cy), cv2.FONT_HERSHEY_DUPLEX, 0.5, color) | |
return canvas | |
def draw_bboxes(self, canvas, dets, score_thr=0, show_score=True, thick=None, colors=(BasicLayout.colors['blue'])): | |
num_colors = len(colors) | |
for idx, bbox in enumerate(dets): | |
color = colors[idx % num_colors] | |
canvas = self.draw_bbox(canvas, bbox, score_thr=score_thr, show_score=show_score, thick=thick, color=color) | |
return canvas | |