From fdb94d2a550491ac4b4c408104963684f00ecdf2 Mon Sep 17 00:00:00 2001 From: gdamms Date: Fri, 20 Jan 2023 11:21:23 +0100 Subject: [PATCH] =?UTF-8?q?Co-authored-by:=20pejour=20=20Co-authored-by:=20Laure=CE=B7t=20?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.py | 44 +++++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 17 deletions(-) diff --git a/src/main.py b/src/main.py index 5fa6190..7bcb606 100644 --- a/src/main.py +++ b/src/main.py @@ -4,7 +4,10 @@ from itertools import product import pickle import matplotlib.pyplot as plt -VOXEL_SIZE = 3e-2 + +from borders import update_border + +VOXEL_SIZE = 6e-2 X_MIN, X_MAX = -1.5, 1.5 Y_MIN, Y_MAX = -1.5, 1.5 Z_MIN, Z_MAX = -0.5, 0.5 @@ -38,30 +41,37 @@ for k in range(nb_frame): cam_points = cam_points[:,solid] points = points[solid,:] - for cam_point in cam_points.T: + # for cam_point in cam_points.T: # cv2.circle(frame, (cam_point[0], cam_point[1]), 2, (255*is_in[k], 0, 255*(not is_in[k]))) - cv2.circle(frame, (cam_point[0], cam_point[1]), 2, (255, 0, 255)) + # cv2.circle(frame, (cam_point[0], cam_point[1]), 2, (255, 0, 255)) -for k in range(nb_frame): - frame = cv2.imread(f'/tmp/masks/Image{k:04}.png') +# for k in range(nb_frame): +# frame = cv2.imread(f'/tmp/masks/Image{k:04}.png') - with open(f"/tmp/cameras/{k:04d}.pickle", 'rb') as file: - proj_mat = pickle.load(file)["P"] +# with open(f"/tmp/cameras/{k:04d}.pickle", 'rb') as file: +# proj_mat = pickle.load(file)["P"] - cam_points = proj_mat @ points.T - cam_points /= cam_points[2,:] - cam_points = np.round(cam_points).astype(np.int32) +# cam_points = proj_mat @ points.T +# cam_points /= cam_points[2,:] +# cam_points = np.round(cam_points).astype(np.int32) - for cam_point in cam_points.T: - # cv2.circle(frame, (cam_point[0], cam_point[1]), 2, (255*is_in[k], 0, 255*(not is_in[k]))) - cv2.circle(frame, (cam_point[0], cam_point[1]), 2, (255, 0, 255)) +# for cam_point in cam_points.T: +# # cv2.circle(frame, (cam_point[0], cam_point[1]), 2, (255*is_in[k], 0, 255*(not is_in[k]))) +# cv2.circle(frame, (cam_point[0], cam_point[1]), 2, (255, 0, 255)) - cv2.imshow('Frame', frame) - cv2.waitKey(0) +# cv2.imshow('Frame', frame) +# cv2.waitKey(0) + + +voxel = np.zeros((int((X_MAX-X_MIN)/VOXEL_SIZE), int((Y_MAX-Y_MIN)/VOXEL_SIZE), int((Z_MAX-Z_MIN)/VOXEL_SIZE))) +idx = np.floor_divide(points[:, :3] - np.array([X_MIN, Y_MIN, Z_MIN]), VOXEL_SIZE).astype(int) +voxel[idx[:,0], idx[:,1], idx[:,2]] = 1 + +border = update_border(voxel) # 3D plot the result fig = plt.figure() ax = fig.add_subplot(111, projection='3d') -ax.scatter(points[:,0], points[:,1], points[:,2], c='r', marker='o') -plt.axis("equal") +ax.scatter(np.where(border)[0], np.where(border)[1], np.where(border)[2], c='b', marker='o', s=1) +plt.axis('equal') plt.show()