コード例 #1
0
def vis_parsing(img, parsing, colormap, show_segms=True):
    """Visualizes a single binary parsing."""

    img = img.astype(np.float32)
    idx = np.nonzero(parsing)
    # for i in range(20):
    #     print(parsing[parsing == i])
    #     if i == 15:
    #         parsing[parsing == i] = 1
    #         print(i)

    parsing_alpha = 0.4
    colormap = colormap_utils.dict2array(colormap)
    parsing_color = colormap[parsing.astype(np.int)]

    border_color = (255, 255, 255)
    border_thick = 1

    img[idx[0], idx[1], :] *= (1.0 - parsing_alpha)
    # img[idx[0], idx[1], :] += alpha * parsing_color
    print(img.shape, parsing_color.shape)
    img += parsing_alpha * parsing_color

    # if cfg.VIS.SHOW_PARSS.SHOW_BORDER and not show_segms:
    #     _, contours, _ = cv2.findContours(parsing.copy(), cv2.RETR_CCOMP, cv2.CHAIN_APPROX_NONE)
    #     cv2.drawContours(img, contours, -1, border_color, border_thick, cv2.LINE_AA)
    return parsing_color.astype(np.uint8)
コード例 #2
0
def vis_parsing(path):
    parsing = cv2.imread(path, 0)
    parsing_color_list = eval('colormap_utils.{}'.format('CIHP20'))  # CIHP20
    parsing_color_list = colormap_utils.dict_bgr2rgb(parsing_color_list)
    colormap = colormap_utils.dict2array(parsing_color_list)
    parsing_color = colormap[parsing.astype(np.int)]
    cv2.imwrite('vis_train_{}_{}.png'.format(str(10), str(10)), parsing_color)
コード例 #3
0
def vis_parsing333(path, dir):
    parsing = cv2.imread(path, 0)
    parsing_color_list = eval('colormap_utils.{}'.format('MHP59'))  # CIHP20
    parsing_color_list = colormap_utils.dict_bgr2rgb(parsing_color_list)
    colormap = colormap_utils.dict2array(parsing_color_list)
    parsing_color = colormap[parsing.astype(np.int)]
    cv2.imwrite(os.path.join(dir, os.path.basename(path)), parsing_color)
コード例 #4
0
def vis_parsing(path, dir, colormap, im_ori, draw_contours):
    parsing = cv2.imread(path, 0)
    parsing_color_list = eval('colormap_utils.{}'.format(colormap))  # CIHP20
    parsing_color_list = colormap_utils.dict_bgr2rgb(parsing_color_list)
    colormap = colormap_utils.dict2array(parsing_color_list)
    parsing_color = colormap[parsing.astype(np.int)]

    parsing_alpha = 0.9
    idx = np.nonzero(parsing)
    im_ori = im_ori.astype(np.float32)
    im_ori[idx[0], idx[1], :] *= 1.0 - parsing_alpha
    im_ori += parsing_alpha * parsing_color
    ######
    if draw_contours:
        contours, _ = cv2.findContours(parsing.copy(), cv2.RETR_TREE,
                                       cv2.CHAIN_APPROX_SIMPLE)
        parsing_color = parsing_color.astype(np.uint8)
        cv2.drawContours(im_ori, contours, -1, (0, 0, 255), 1)
    # M = cv2.moments(contours[1])  # 计算第一条轮廓的各阶矩,字典形式
    # center_x = int(M["m10"] / M["m00"])
    # center_y = int(M["m01"] / M["m00"])
    # cv2.circle(parsing_color, (center_x, center_y), 30, 128, -1)  # 绘制中心点
    # print(center_x, center_y)

    cv2.imwrite(os.path.join(dir, os.path.basename(path)), im_ori)
コード例 #5
0
def vis_parsing_dir(new_dir, colormap, img_dir, parsing_dir, draw_contours):
    coco_folder = '/xuhanzhu/mscoco2014'
    cihp_coco = COCO(coco_folder +
                     '/annotations/densepose_coco_2014_train.json')
    im_ids = cihp_coco.getImgIds()

    for im_id in sorted(im_ids):

        im = cihp_coco.loadImgs(im_id)[0]
        filename = im['file_name']

        ori_path = os.path.join(img_dir, filename)
        new_path = os.path.join(new_dir, filename)
        parsing_path = os.path.join(parsing_dir,
                                    filename.replace('.jpg', '.png'))
        parsing = cv2.imread(parsing_path, 0)
        if os.path.exists(ori_path):
            im_ori = cv2.imread(ori_path)
            parsing_color_list = eval(
                'colormap_utils.{}'.format('MHP59'))  # CIHP20
            parsing_color_list = colormap_utils.dict_bgr2rgb(
                parsing_color_list)
            colormap = colormap_utils.dict2array(parsing_color_list)
            parsing_color = colormap[parsing.astype(np.int)]
            # parsing_color = parsing_color[..., ::-1]

            parsing_alpha = 0.9
            idx = np.nonzero(parsing)
            im_ori = im_ori.astype(np.float32)
            im_ori[idx[0], idx[1], :] *= 1.0 - parsing_alpha
            im_ori += parsing_alpha * parsing_color
            #####
            if draw_contours:
                contours, _ = cv2.findContours(parsing.copy(), cv2.RETR_TREE,
                                               cv2.CHAIN_APPROX_SIMPLE)
                cv2.drawContours(im_ori, contours, -1, (0, 0, 255), 1)

            cv2.imwrite(new_path, im_ori)
        else:
            continue
コード例 #6
0
im_ids = cihp_coco.getImgIds()
Selected_im = im_ids[randint(0, len(im_ids))]

Selected_im = 17144
im = cihp_coco.loadImgs(Selected_im)[0]
ann_ids = cihp_coco.getAnnIds(imgIds=im['id'])
anns = cihp_coco.loadAnns(ann_ids)
im_name = os.path.join(coco_folder + 'train_img', im['file_name'])
mask_name = os.path.join(coco_folder + 'train_seg',
                         im['file_name'].replace('jpg', 'png'))
for i, obj in enumerate(anns):
    parsing_name = os.path.join(coco_folder + 'train_parsing', obj['parsing'])
    parsing = cv2.imread(parsing_name, 0)
    parsing_color_list = eval('colormap_utils.{}'.format('CIHP20'))  # CIHP20
    parsing_color_list = colormap_utils.dict_bgr2rgb(parsing_color_list)
    colormap = colormap_utils.dict2array(parsing_color_list)
    parsing_color = colormap[parsing.astype(np.int)]
    cv2.imwrite('vis_train_{}_{}.png'.format(str(Selected_im), str(i)),
                parsing_color)
# if os.path.exists(im_name) and os.path.exists(mask_name):
#     print('Exits', im_name, mask_name)
#     I = cv2.imread(im_name)
#     mask = cv2.imread(mask_name, 0)
#     # ins_pars = mask.numpy()  # [instance].parsing
#     # ins_pars = np.array(F.to_pil_image(mask))
#     mask = np.reshape(mask, I.shape[:2])
#     # h, w = mask.shape[:2]
#     parsing_color_list = eval('colormap_utils.{}'.format('CIHP20'))  # CIHP20
#     parsing_color_list = colormap_utils.dict_bgr2rgb(parsing_color_list)
#     # I[0:h, 0:w, :] = vis_parsing(I[0:h, 0:w, :], mask, parsing_color_list)
#     I = vis_parsing(I, mask, parsing_color_list)