def get_thread_thumb_info(bbox_list, theta_list, thumbsize, img_size): r""" Args: bbox_list (list): theta_list (list): thumbsize (?): img_size (?): CommandLine: python -m guitool.api_thumb_delegate --test-get_thread_thumb_info Example: >>> # ENABLE_DOCTEST >>> from guitool.api_thumb_delegate import * # NOQA >>> # build test data >>> bbox_list = [(100, 50, 400, 200)] >>> theta_list = [0] >>> thumbsize = 128 >>> img_size = 600, 300 >>> # execute function >>> result = get_thread_thumb_info(bbox_list, theta_list, thumbsize, img_size) >>> # verify results >>> print(result) ((128, 64), [[[21, 11], [107, 11], [107, 53], [21, 53], [21, 11]]]) """ theta_list = [theta_list] if not ut.is_listlike(theta_list) else theta_list max_dsize = (thumbsize, thumbsize) dsize, sx, sy = vt.resized_clamped_thumb_dims(img_size, max_dsize) # Compute new verts list new_verts_list = list(vt.scaled_verts_from_bbox_gen(bbox_list, theta_list, sx, sy)) return dsize, new_verts_list
def draw_thumb_helper(tup): thumbsize, gpath, orient, bbox_list, theta_list = tup # time consuming # img = vt.imread(gpath, orient=orient) img = vt.imread(gpath) (gh, gw) = img.shape[0:2] img_size = (gw, gh) if isinstance(thumbsize, int): max_dsize = (thumbsize, thumbsize) dsize, sx, sy = vt.resized_clamped_thumb_dims(img_size, max_dsize) elif isinstance(thumbsize, tuple) and len(thumbsize) == 2: th, tw = thumbsize dsize, sx, sy = thumbsize, tw / gw, th / gh else: raise ValueError('Incompatible thumbsize') new_verts_list = list(vt.scaled_verts_from_bbox_gen(bbox_list, theta_list, sx, sy)) # ----------------- # Actual computation thumb = vt.resize(img, dsize) orange_bgr = (0, 128, 255) for new_verts in new_verts_list: thumb = vt.draw_verts(thumb, new_verts, color=orange_bgr, thickness=2) width, height = dsize return thumb, width, height