Download utils.py from maisonbleue/Simultaneous-Segmented-Depth-Prediction: direct link, hf CLI and curl.
- Browser
- Download file 1.68 kB
-
https://huggingface.co/spaces/maisonbleue/Simultaneous-Segmented-Depth-Prediction/resolve/main/utils.py
- Command line
-
hf download hf://spaces/maisonbleue/Simultaneous-Segmented-Depth-Prediction/utils.py
-
curl -L -o utils.py https://huggingface.co/spaces/maisonbleue/Simultaneous-Segmented-Depth-Prediction/resolve/main/utils.py
1.68 kB
| import cv2 | |
| import numpy as np | |
| from point_cloud_generator import PointCloudGenerator | |
| # pcd_generator = PointCloudGenerator() | |
| def resize(image): | |
| """ | |
| resize the input nd array | |
| """ | |
| h, w = image.shape[:2] | |
| if h > w: | |
| return cv2.resize(image, (480, 640)) | |
| # specs res | |
| #return cv2.resize(image, (1008, 1512)) | |
| else: | |
| return cv2.resize(image, (640, 480)) | |
| # specs res | |
| #return cv2.resize(image, (1512, 1008)) | |
| def get_masked_depth(depth_map, mask): | |
| masked_depth_map = depth_map*mask | |
| pixel_depth_vals = masked_depth_map[masked_depth_map>0] | |
| mean_depth = np.mean(pixel_depth_vals) | |
| return masked_depth_map, 1-mean_depth | |
| def draw_depth_info(image, depth_map, objects_data): | |
| image = image.copy() | |
| # object data -> [cls_id, cls_name, cls_center, cls_mask, cls_clr] | |
| for data in objects_data: | |
| center = data[2] | |
| mask = data[3] | |
| _, depth = get_masked_depth(depth_map, mask) | |
| cv2.rectangle(image, (center[0]-15, center[1]-15), (center[0]+(len(str(round(depth*10, 2))+'m')*12), center[1]+15), data[4], -1) | |
| cv2.putText(image, str(round(depth*10, 2))+'m', (center[0]-5, center[1]+5), cv2.FONT_HERSHEY_SIMPLEX, 0.6, (255, 255, 255), 2) | |
| return image | |
| def generate_obj_pcd(depth_map, objects_data): | |
| objs_pcd = [] | |
| pcd_generator = PointCloudGenerator() | |
| for data in objects_data: | |
| mask = data[3] | |
| cls_clr = data[4] | |
| masked_depth = depth_map*mask | |
| # generating point cloud using masked depth | |
| pcd = pcd_generator.generate_point_cloud(masked_depth) | |
| objs_pcd.append((pcd, cls_clr)) | |
| return objs_pcd | |