def data_extract(self): list_img = os.listdir(self.input_slide_dir) list_obj_mask = os.listdir(self.obj_dir) list_obj_Tissue = os.listdir(self.tissue_mask_dir) list_img = sorted(list_img, key=natural_key) list_obj_mask = sorted(list_obj_mask, key=natural_key) list_obj_Tissue = sorted(list_obj_Tissue, key=natural_key) voronoi_dir = 'voronoi' if os.path.exists(os.path.join(self.output_dir, voronoi_dir)) is False: os.makedirs(os.path.join(self.output_dir, voronoi_dir)) for p1 in range(len(list_img)): file_name = list_img[p1] img = cv2.imread(os.path.join(self.input_slide_dir, list_img[p1])) img_orig = img.copy() file1 = os.path.join(self.obj_dir, list_obj_mask[p1]) file2 = os.path.join(self.tissue_mask_dir, list_obj_Tissue[p1]) x1 = [] y1 = [] points11 = [] x1, y1 = centroids1(file1) for i in range(0, len(x1)): points11.append([x1[i], y1[i]]) points = np.array(points11) vor = Voronoi(points) regions, vertices = voronoi_finite_polygons_2d(vor) cnts_img_t = Contours(file2) point_t = [] for c1 in cnts_img_t: point_t.append([c1[0][0], c1[0][1]]) point_t = np.array(point_t) pts = MultiPoint([Point(i) for i in point_t]) mask = pts.convex_hull print("mask=", mask.bounds) new_vertices = [] a = 0 for region in regions: print("a=", a) a = a + 1 polygon = vertices[region] shape = list(polygon.shape) shape[0] += 1 p = Polygon(np.append( polygon, polygon[0]).reshape(*shape)).intersection(mask) print("p=", p.bounds) print("lk=", int(p.length)) l1 = int(p.length) if (l1 > 0): poly = np.array( list( zip(p.boundary.coords.xy[0][:-1], p.boundary.coords.xy[1][:-1]))) new_vertices.append(poly) new_vertices.append(poly) for p1 in new_vertices: pts = np.array(p1, np.int32) pts = pts.reshape((-1, 1, 2)) cv2.polylines(img, [pts], True, (0, 0, 0), 3) for p1 in points11: cv2.circle(img, (p1[0], p1[1]), 13, (0, 255, 0), cv2.FILLED, cv2.LINE_AA, 0) # cv2.imwrite(os.path.join(self.output_dir, voronoi_dir, file_name), img) new_vert = [] for i in range(len(new_vertices)): new_vert.append(new_vertices[i].tolist()) write_voronoi_detail(self.output_dir, file_name, new_vert)