示例#1
0
    def segment(self, image: Image) -> Image:
        image_hsv = image.to_hsv()
        image_mask = cv2.inRange(image_hsv.to_numpy(), self._mask_lower,
                                 self._mask_higher)
        image_mask = cv2.bitwise_not(image_mask)

        return Image(image_mask, GrayColor())
示例#2
0
    def set_background(self, background_image: Image, z_value: float):
        background_hsv = background_image.to_hsv()
        background_flattened = self._flatten_background(
            background_hsv.to_numpy())

        low = []
        high = []

        for i in range(3):
            mu = background_flattened[i].mean()
            sigma = background_flattened[i].std()
            deviation = z_value * sigma
            low.append(self._restrict(mu - deviation))
            high.append(self._restrict(mu + deviation))

        self._mask_lower = np.array([low[0], low[1], low[2]])
        self._mask_higher = np.array([high[0], high[1], high[2]])
示例#3
0
 def to_gray(self, context: Image) -> Image:
     return context.clone()
示例#4
0
 def to_hsv(self, context: Image) -> Image:
     return context.to_rgb().to_hsv()
示例#5
0
 def to_bgr(self, context: Image) -> Image:
     bgr_data = cv2.cvtColor(context.data, cv2.COLOR_GRAY2BGR)
     return Image(bgr_data, BGRColor())
示例#6
0
 def to_gray(self, context: Image) -> Image:
     return context.to_rgb().to_gray()
示例#7
0
 def to_rgb(self, context: Image) -> Image:
     rgb_data = cv2.cvtColor(context.data, cv2.COLOR_GRAY2RGB)
     return Image(rgb_data, RGBColor())
示例#8
0
 def to_hsv(self, context: Image) -> Image:
     return context.clone()
示例#9
0
 def to_gray(self, context: Image) -> Image:
     gray_data = cv2.cvtColor(context.data, cv2.COLOR_RGB2GRAY)
     return Image(gray_data, GrayColor())
示例#10
0
 def to_hsv(self, context: Image) -> Image:
     hsv_data = cv2.cvtColor(context.data, cv2.COLOR_RGB2HSV)
     return Image(hsv_data, HSVColor())
示例#11
0
 def compute(self, image: 'Image') -> 'Image':
     _, data = cv2.connectedComponents(image.to_numpy())
     return Image(data, GrayColor())
示例#12
0
def select_roi(window: NamedWindow, image: Image) -> BoundingBox:
    x1, y1, w, h = cv2.selectROI(window.name, image.to_numpy())
    if w == 0 or h == 0:
        raise Exception('no selection')
    return BoundingBox(Point(x1, y1), Point(x1 + w - 1, y1 + h - 1))