예제 #1
0
 def __init__(self, ksize: int):
     """
     creates a pipeline that blurs the given frame using the median blur method
     works very good for denoising purposes
     :param ksize: the size of the kernel used by the filter, must be an odd number
     :return: a pipeline that filters the image using the median blur method
     """
     PipeLine.__init__(self, lambda frame: cv2.medianBlur(frame, ksize))
예제 #2
0
 def __init__(self, ksize, iterations=1):
     """
     creates a pipeline that erodes the image by a kernel of ones
     used mainly for Erode & Dilate denoise filters
     :param ksize: the kernel size, either an integer (meaning an nxn kernel) or a tuple (nxm kernel)
     :param iterations: optional, the amount of Erode iterations to perform, default is 1
     None! a large number of iterations will slow down the program
     :return: a pipeline that erodes the given frame
     """
     if type(ksize) is int:
         ksize = (ksize, ksize)
     PipeLine.__init__(
         self, lambda frame: cv2.erode(
             frame, np.ones(ksize), iterations=iterations))
예제 #3
0
    def __init__(self, collision_func: Callable[[Shape, Shape], bool]):
        def _filter(shapes: List[Shape]) -> List[Shape]:
            filtered_shapes = []
            for i, shape in enumerate(shapes):
                shape_invalid = False
                for j in range(i):
                    shape_invalid = collision_func(shape, shapes[j])
                    if shape_invalid:
                        break
                if not shape_invalid:
                    filtered_shapes.append(shape)
            return filtered_shapes

        PipeLine.__init__(self, _filter)
예제 #4
0
    def __init__(self, finding_func, color, drawing_func, *args, **kwargs):
        def _draw(frame):
            return drawing_func(frame, finding_func(frame), color, *args,
                                **kwargs)

        PipeLine.__init__(self, _draw)
예제 #5
0
 def __init__(self, ksize: Union[int, Tuple[int, int]], iterations=1):
     PipeLine.__init__(self)
     self.functions += (Erode(ksize, iterations) +
                        Dilate(ksize, iterations)).functions
예제 #6
0
 def __init__(self, min_area: float):
     PipeLine.__init__(self, lambda cnts: filter(lambda c: cv2.contourArea(c) >= min_area, cnts), list)
예제 #7
0
@PipeLine
def find_contours(frame):
    return cv2.findContours(frame, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)[CONTOURS_INDEX]


@PipeLine
def sort_contours(cnts):
    return sorted(cnts, key=lambda x: cv2.contourArea(x), reverse=True)


class FilterContours(PipeLine):
    def __init__(self, min_area: float):
        PipeLine.__init__(self, lambda cnts: filter(lambda c: cv2.contourArea(c) >= min_area, cnts), list)


convex_hull = PipeLine(cv2.convexHull)


@PipeLine
def convex_hull_multiple(cnts):
    return list(map(convex_hull, cnts))


@PipeLine
def contour_center(cnt):
    m = cv2.moments(cnt)
    return int(m['m10'] / (m['m00'] + EPSILON)), int(m['m01'] / (m['m00'] + EPSILON))

@PipeLine
def contours_centers(cnts):
    return list(map(contour_center, cnts))
 def __init__(self, min_distance_ratio: float):
     PipeLine.__init__(self)
     from gbvision.models.basic_ops import normalized_distance_transform
     self.functions += (normalized_distance_transform + ColorThreshold([[min_distance_ratio, 1.0]],
                                                                       ColorThreshold.THRESH_TYPE_GRAY)).functions
예제 #9
0
파일: system.py 프로젝트: Kafow/GBVision
from gbvision.utils.pipeline import PipeLine

EMPTY_PIPELINE = PipeLine()
예제 #10
0
파일: denoising.py 프로젝트: Kafow/GBVision
 def __init__(self, ksize: int):
     PipeLine.__init__(self, lambda frame: cv2.medianBlur(frame, ksize))
예제 #11
0
파일: denoising.py 프로젝트: Kafow/GBVision
 def __init__(self, ksize: Union[int, Tuple[int, int]], iterations=1):
     if type(ksize) is int:
         ksize = (ksize, ksize)
     PipeLine.__init__(
         self, lambda frame: cv2.dilate(
             frame, np.ones(ksize), iterations=iterations))
예제 #12
0
파일: contours.py 프로젝트: Kafow/GBVision
def __mapper(func) -> PipeLine:
    return PipeLine(lambda x: list(map(func, x)))