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
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)
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))
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])