From 9c5d61baa3051b6f60d2ab7d53e17159da78f27c Mon Sep 17 00:00:00 2001 From: Gduret <guillaume.duret@ec-lyon.fr> Date: Wed, 1 Mar 2023 16:02:35 +0100 Subject: [PATCH] add resizing fps --- compute_features.py | 34 +++++++++++++++++++++++++++------- fps_alg.py | 2 +- main.py | 15 ++++++++++++--- 3 files changed, 40 insertions(+), 11 deletions(-) diff --git a/compute_features.py b/compute_features.py index f2473af..af05403 100644 --- a/compute_features.py +++ b/compute_features.py @@ -31,7 +31,7 @@ def updateJsonFile(): jsonFile.close() -def process_compute(data_name, camera, Nb_camera, World_begin, Nb_world, list_categories, occ_target, vis): +def process_compute(data_name, camera, camera_resized, new_size, Nb_camera, World_begin, Nb_world, list_categories, occ_target, vis): transformation = np.matrix([[0.0000000, -1.0000000, 0.0000000], [0.0000000, 0.0000000, -1.0000000], [1.0000000, 0.0000000, 0.0000000]]) @@ -66,9 +66,7 @@ def process_compute(data_name, camera, Nb_camera, World_begin, Nb_world, list_ca for categories in list_categories: - if categories in catergories_occ_array.keys(): - if len(catergories_occ_array[categories]) == 1 : meta = {} @@ -131,11 +129,15 @@ def process_compute(data_name, camera, Nb_camera, World_begin, Nb_world, list_ca instance_img = instance(img, id) cv2.imwrite(f"{data_name}/Generated/{categories}/Instance_Mask/{p}.png", 255*instance_img) - + cat_mask = cv2.resize(instance_img, new_size) + cv2.imwrite(f"{data_name}/Generated/{categories}/Instance_Mask_resized/{p}.png", 255*cat_mask) img = cv2.imread(f"{data_name}/RGB/{p}.png") cv2.imwrite(f"{data_name}/Generated/{categories}/RGB_Gen/{p}.png", img) + img_resized = cv2.resize(img, new_size) + cv2.imwrite(f"{data_name}/Generated/{categories}/RGB_resized/{p}.png", img_resized) + np.set_printoptions(precision=15) pose = np.load(f'{data_name}/Generated/{categories}/Pose_transformed/{p}.npy') #print(pose) @@ -170,12 +172,30 @@ def process_compute(data_name, camera, Nb_camera, World_begin, Nb_world, list_ca out.append(x) out.append(y) ind += 2 - print("points" , points) - print("out" , out) - print("np.array(out).reshape(1, len(out))", np.array(out).reshape(1, len(out))) + np.savetxt(f'{data_name}/Generated/{categories}/FPS/{p}.txt', np.array(out).reshape(1, len(out))) #print("stop") + points_resized = process2(fps_points, R_exp, tVec, camera_resized, img_resized, vis) + #out = np.zeros((1, )) + + out_resized = [int(catergories_occ_array[categories][0])]# [catergories_occ_array[categories][0]] #obj_id #len have to be 1 !! + print(out) + + + ind_resized = 1 + for point_resized in points_resized: + #out[0][ind] = point[0][0] / img.shape[1] + #[0][ind + 1] = point[0][1] / img.shape[0] + x_resized = point_resized[0][0] / img_resized.shape[1] + y_resized = point_resized[0][1] / img_resized.shape[0] + out_resized.append(x_resized) + out_resized.append(y_resized) + ind_resized += 2 + + np.savetxt(f'{data_name}/Generated/{categories}/FPS_resized/{p}.txt', np.array(out_resized).reshape(1, len(out_resized))) + #print("stop") + with open(f'{data_name}/Generated/Count_{p}.json', mode='w') as f: f.write(json.dumps(list_count_categories, indent=4)) print(list_count_categories) diff --git a/fps_alg.py b/fps_alg.py index 3d5f14c..fa2f93f 100644 --- a/fps_alg.py +++ b/fps_alg.py @@ -108,13 +108,13 @@ def process2(pcd, R_exp, tVec, camera, img, vis= True): # print(pcd_fps_numpy[n], '==>', keypoint_2d[0][n]) if vis: + img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) out = np.zeros((img.shape[0], img.shape[1], 16)) fig, ax = plt.subplots() ax.imshow(img) for n in range(len(pcd_fps_numpy)): point = keypoint_2d[0][n] ax.plot(point[0][0], point[0][1], marker='.', color="red") - plt.imshow(img) plt.show() return keypoint_2d[0] diff --git a/main.py b/main.py index ab43f89..421af84 100644 --- a/main.py +++ b/main.py @@ -17,11 +17,11 @@ def generate_folders(name, list_categories): is_exist = os.path.exists(name) if not is_exist: os.mkdir(name) - folders = ["RGB", "RGB_Gen", "RGB_resized", "Meta_Gen", "Depth", "Mask", "Meta", "Pose", "Bbox_2d", "Bbox_2d_loose", "Instance_Segmentation", "Semantic_Segmentation", "Instance_Mask", "Instance_Mask_resized", "Occlusion", "Models", "Pose_transformed", "Bbox", "FPS"] + folders = ["RGB", "RGB_Gen", "RGB_resized", "Meta_Gen", "Depth", "Mask", "Meta", "Pose", "Bbox_2d", "Bbox_2d_loose", "Instance_Segmentation", "Semantic_Segmentation", "Instance_Mask", "Instance_Mask_resized", "Occlusion", "Models", "Pose_transformed", "Bbox", "FPS", "FPS_resized"] for f in folders: is_exist = os.path.exists(f"{name}/{f}") if not is_exist: - if f not in ["RGB_Gen", "RGB_resized", "Instance_Mask", "Instance_Mask_resized", "Meta_Gen", "Models", "Pose_transformed", "Bbox", "FPS"]: + if f not in ["RGB_Gen", "RGB_resized", "Instance_Mask", "Instance_Mask_resized", "Meta_Gen", "Models", "Pose_transformed", "Bbox", "FPS" , "FPS_resized"]: os.mkdir(f"{name}/{f}") else: for cat in list_categories: @@ -74,6 +74,9 @@ if __name__ == '__main__': np.savetxt(f'{dataset_name}/Generated/{categories}/{categories}_fps_3d.txt', fps_points) + + + if choice == 'high': camera = np.matrix([[1386.4138492513919, 0.0, 960.5], [0.0, 1386.4138492513919, 540.5], @@ -85,11 +88,17 @@ if __name__ == '__main__': new_size = (640, 480) + trans = np.matrix([[0.5, 0.0, 0.0], + [0.0, (2 / 3), 0.0], + [0.0, 0.0, 1.0]]) + + new_camera = trans @ camera + np.savetxt(f'{dataset_name}/Generated/camera_{choice}.txt', camera) reform_data(dataset_src, dataset_name, dataset_type, Nb_camera, args.World_begin, args.Nb_worlds) - process_compute(dataset_name, camera, new_size, Nb_camera, args.World_begin, args.Nb_worlds, list_categories, occ_target, False) + process_compute(dataset_name, camera, new_camera, new_size, Nb_camera, args.World_begin, args.Nb_worlds, list_categories, occ_target, True) #transform_pose(dataset_name, Nb_camera, Nb_world, list_categories, occ_target) #generate_2d_bbox(dataset_name, Nb_camera, Nb_world, list_categories, occ_target) #generate_instance_mask(dataset_name, Nb_camera, Nb_world, list_categories, occ_target) -- GitLab