Python pyclipper.CT_UNION Examples
The following are 7
code examples of pyclipper.CT_UNION().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
pyclipper
, or try the search function
.
Example #1
Source File: clipping.py From glmtools with BSD 3-Clause "New" or "Revised" License | 6 votes |
def join_polys(polys, scale=True): """ Given a list of polygons, merge them (union) and return a list of merged polygons """ pc = pyclipper.Pyclipper() if scale: polys = scale_to_clipper(polys) results=[] pc.AddPaths(polys, pyclipper.PT_SUBJECT, True) clip_polys = pc.Execute(pyclipper.CT_UNION, pyclipper.PFT_NONZERO, pyclipper.PFT_NONZERO) if scale: clip_polys = scale_from_clipper(clip_polys) results.extend([cp for cp in clip_polys]) pc.Clear() return results
Example #2
Source File: clippers.py From geomeppy with MIT License | 5 votes |
def union(self, poly): # type: (Polygon) -> List[Polygon] """Union with another polygon. :param poly: The clip polygon. :returns: A list of Polygons. """ clipper = self._prepare_clipper(poly) if not clipper: return [] unions = clipper.Execute(pc.CT_UNION, pc.PFT_NONZERO, pc.PFT_NONZERO) return self._process(unions)
Example #3
Source File: polygon.py From mapbox-vector-tile with MIT License | 5 votes |
def make_valid_pyclipper(shape): """ Use the pyclipper library to "union" a polygon on its own. This operation uses the even-odd rule to determine which points are in the interior of the polygon, and can reconstruct the orientation of the polygon from that. The pyclipper library is robust, and uses integer coordinates, so should not produce any additional degeneracies. Before cleaning the polygon, we remove all degenerate inners. This is useful to remove inners which have collapsed to points or lines, which can interfere with the cleaning process. """ # drop all degenerate inners clean_shape = _drop_degenerate_inners(shape) pc = pyclipper.Pyclipper() try: pc.AddPaths(_coords(clean_shape), pyclipper.PT_SUBJECT, True) # note: Execute2 returns the polygon tree, not the list of paths result = pc.Execute2(pyclipper.CT_UNION, pyclipper.PFT_EVENODD) except pyclipper.ClipperException: return MultiPolygon([]) return _polytree_to_shapely(result)
Example #4
Source File: evaluation.py From keras-ocr with MIT License | 5 votes |
def iou_score(box1, box2): """Returns the Intersection-over-Union score, defined as the area of the intersection divided by the intersection over the union of the two bounding boxes. This measure is symmetric. Args: box1: The coordinates for box 1 as a list of (x, y) coordinates box2: The coordinates for box 2 in same format as box1. """ if len(box1) == 2: x1, y1 = box1[0] x2, y2 = box1[1] box1 = np.array([[x1, y1], [x2, y1], [x2, y2], [x1, y2]]) if len(box2) == 2: x1, y1 = box2[0] x2, y2 = box2[1] box2 = np.array([[x1, y1], [x2, y1], [x2, y2], [x1, y2]]) if any(cv2.contourArea(np.int32(box)[:, np.newaxis, :]) == 0 for box in [box1, box2]): warnings.warn('A box with zero area was detected.') return 0 pc = pyclipper.Pyclipper() pc.AddPath(np.int32(box1), pyclipper.PT_SUBJECT, closed=True) pc.AddPath(np.int32(box2), pyclipper.PT_CLIP, closed=True) intersection_solutions = pc.Execute(pyclipper.CT_INTERSECTION, pyclipper.PFT_EVENODD, pyclipper.PFT_EVENODD) union_solutions = pc.Execute(pyclipper.CT_UNION, pyclipper.PFT_EVENODD, pyclipper.PFT_EVENODD) union = sum(cv2.contourArea(np.int32(points)[:, np.newaxis, :]) for points in union_solutions) intersection = sum( cv2.contourArea(np.int32(points)[:, np.newaxis, :]) for points in intersection_solutions) return intersection / union
Example #5
Source File: polygon.py From go2mapillary with GNU General Public License v3.0 | 5 votes |
def make_valid_pyclipper(shape): """ Use the pyclipper library to "union" a polygon on its own. This operation uses the even-odd rule to determine which points are in the interior of the polygon, and can reconstruct the orientation of the polygon from that. The pyclipper library is robust, and uses integer coordinates, so should not produce any additional degeneracies. Before cleaning the polygon, we remove all degenerate inners. This is useful to remove inners which have collapsed to points or lines, which can interfere with the cleaning process. """ # drop all degenerate inners clean_shape = _drop_degenerate_inners(shape) pc = pyclipper.Pyclipper() try: pc.AddPaths(_coords(clean_shape), pyclipper.PT_SUBJECT, True) # note: Execute2 returns the polygon tree, not the list of paths result = pc.Execute2(pyclipper.CT_UNION, pyclipper.PFT_EVENODD) except pyclipper.ClipperException: return MultiPolygon([]) return _polytree_to_shapely(result)
Example #6
Source File: booleanoperationsmixin.py From beziers.py with MIT License | 5 votes |
def union(self,other, flat=False): """Returns a list of Bezier paths representing the union of the two input paths.""" return self.clip(other, pyclipper.CT_UNION, flat)
Example #7
Source File: viafence.py From RF-tools-KiCAD with GNU General Public License v3.0 | 5 votes |
def unionPolygons(pathList): import pyclipper pc = pyclipper.Pyclipper() for path in pathList: pc.AddPath(path, pyclipper.PT_SUBJECT, True) return pc.Execute(pyclipper.CT_UNION, pyclipper.PFT_NONZERO)