def estimate_all(folder, model):
    if not os.path.isdir(folder):
        print('Warning: Directory does not exist...')
        return

    pose_folder = folder.replace('images', 'poses')
    if os.path.isdir(pose_folder):
        print('Cached poses found')
    else:
        os.mkdir(pose_folder)
        image_list = [
            name for name in os.listdir(folder) if name.endswith('.jpg')
        ]
        for name in tqdm(image_list):
            im_name = os.path.join(folder, name)
            img = imread(im_name)
            pose_cords = np.array(cordinates_from_image_file(img, model=model))
            new_path = im_name.replace(folder, pose_folder)
            color, _ = pose_utils.draw_pose_from_cords(pose_cords, (256, 256))
            imsave(new_path, color)
            new_path = new_path.replace('.jpg', '.pose.npy')
            np.save(new_path, pose_cords)

    return pose_folder
示例#2
0
    df = pd.read_csv(args.annotations_file_test, sep=':')
    ano_fr = df[df['name'] == fr].iloc[0]
    ano_to = df[df['name'] == to].iloc[0]
    kp_fr = pose_utils.load_pose_cords_from_strings(ano_fr['keypoints_y'],
                                                    ano_fr['keypoints_x'])
    kp_to = pose_utils.load_pose_cords_from_strings(ano_to['keypoints_y'],
                                                    ano_to['keypoints_x'])

    mask = pose_transform.pose_masks(kp_to,
                                     img_size=args.image_size).astype(bool)

    mask = np.array(reduce(np.logical_or, list(mask)))
    mask = mask.astype('float')

    pose_fr, _ = pose_utils.draw_pose_from_cords(kp_fr, args.image_size)
    pose_to, _ = pose_utils.draw_pose_from_cords(kp_to, args.image_size)

    cur_folder = os.path.join(out_folder, str(n))
    if not os.path.exists(cur_folder):
        os.makedirs(cur_folder)

    imsave(os.path.join(cur_folder, 'from.jpg'),
           imread(os.path.join(args.images_dir_test, fr)))
    imsave(os.path.join(cur_folder, 'to.jpg'),
           imread(os.path.join(args.images_dir_test, to)))

    imsave(os.path.join(cur_folder, 'frpose.jpg'), pose_fr)
    imsave(os.path.join(cur_folder, 'topose.jpg'), pose_to)

    # imsave(os.path.join(cur_folder, 'mask.jpg'), mask)
示例#3
0
            cords[k] = _joint_num
    return _joint_num, mask


if __name__ == "__main__":
    img_dir = './datasets/cardio_dance_test/test_B'  # Change this line into where your video frames are stored
    pose_dir = img_dir.replace('test_B', 'test_A')
    pose_npy_name = img_dir.replace('test_B', 'poses.npy')
    if not os.path.isdir(pose_dir):
        os.mkdir(pose_dir)

    model = load_model('./pose_estimator/pose_estimator.h5')
    img_list = os.listdir(img_dir)
    # get frame shape
    #print("list==", img_list)
    tmp = imread(os.path.join(img_dir, img_list[0]))
    im_shape = tmp.shape[:-1]
    #print('tmp===', tmp)
    #print('im_shape===', im_shape)

    pose_cords = []

    for item in tqdm(img_list):
        img = imread(os.path.join(img_dir, item))
        print("数组的维度数目", img.ndim)
        cord = cordinates_from_image_file(img, model=model)
        pose_cords.append(cord)
        color, _ = draw_pose_from_cords(cord, im_shape)
        imsave(os.path.join(pose_dir, item), color)
        np.save(pose_npy_name, np.array(pose_cords, dtype=np.int))
示例#4
0
        plt.subplot(3, 1, 1)
        kp_fr = pose_utils.load_pose_cords_from_strings(
            kp_fr['keypoints_y'], kp_fr['keypoints_x'])
        kp_to = pose_utils.load_pose_cords_from_strings(
            kp_to['keypoints_y'], kp_to['keypoints_x'])

        img = fr_img.copy()
        #p, m = pose_utils.draw_pose_from_cords(kp_fr, img.shape[:2])
        img = make_stickman(kp_to, fr_img.shape)

        #img[m] = p[m]
        plt.imshow(img)

        plt.subplot(3, 1, 2)
        img = to_img.copy()
        p, m = pose_utils.draw_pose_from_cords(kp_to, img.shape[:2])
        img[m] = p[m]
        plt.imshow(img)

        # tr = estimate_uniform_transform(kp_fr, kp_to)
        #
        # no_point_tr = np.array([[1, 0, 1000], [0, 1, 1000], [0, 0, 1]])
        # if np.all(tr == no_point_tr.reshape((-1, 9))[..., :-1]):
        #     print >>f, '_'.join([fr,to]) + '.jpg'

        p = resize(p, (256, 256), preserve_range=True).astype(np.uint8)
        m = resize(m, (256, 256), preserve_range=True).astype(bool)
        fr_img = resize(fr_img, (256, 256), preserve_range=True).astype(float)

        tr = affine_transforms(kp_fr, kp_to)
        masks = pose_masks(kp_to, fr_img.shape[:2])