You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
1010 B
Python

import numpy as np
from skimage.measure import approximate_polygon, find_contours
import cv2
for frame_results in detections:
frame_height = frame_results['frame_height']
frame_width = frame_results['frame_width']
frame_number = frame_results['frame_id']
detection = frame_results['detections']
detection = detection[0, 0, :, :]
width, height = detection.shape
for i in range(21):
zero = np.zeros((width,height),dtype=np.uint8)
f = float(i)
zero = ((detection == f) * 255).astype(np.float32)
zero = cv2.resize(zero, dsize=(frame_width, frame_height), interpolation=cv2.INTER_CUBIC)
contours = find_contours(zero, 0.8)
for contour in contours:
contour = np.flip(contour, axis=1)
contour = approximate_polygon(contour, tolerance=2.5)
segmentation = contour.tolist()
if len(segmentation) < 3:
continue
results.add_polygon(segmentation, i, frame_number)