当前位置: 首页>>代码示例>>Python>>正文


Python ImageDraw.floodfill方法代码示例

本文整理汇总了Python中PIL.ImageDraw.floodfill方法的典型用法代码示例。如果您正苦于以下问题:Python ImageDraw.floodfill方法的具体用法?Python ImageDraw.floodfill怎么用?Python ImageDraw.floodfill使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在PIL.ImageDraw的用法示例。


在下文中一共展示了ImageDraw.floodfill方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: fill

# 需要导入模块: from PIL import ImageDraw [as 别名]
# 或者: from PIL.ImageDraw import floodfill [as 别名]
	def fill(self,seedPoint,fillValue=1 ):
		"fills an area starting with seed"
		i = self.index(seedPoint);
		v = self.p[:];
		x = Image.fromarray(v.T);
		ImageDraw.Draw(x);
		ImageDraw.floodfill(x,(i[0],i[1]),fillValue);

		v[:] = np.array(x).T;
开发者ID:adam-urbanczyk,项目名称:emcfab,代码行数:11,代码来源:pixmaptest.py

示例2: createMask

# 需要导入模块: from PIL import ImageDraw [as 别名]
# 或者: from PIL.ImageDraw import floodfill [as 别名]
def createMask(imageIn, threshold=10, fillHoles=True, backgroundColor=255, blurRadius=0.0,
                maskScale=1.0):
    """
    Given an image, create a mask by locating the pixels that are not the backgroundColor
    (within a threshold).

    @param threshold  How far away from the backgroundColor a pixel must be to be included
                        in the mask
    @param fillHoles  If true, the inside of the mask will be filled in. This is useful if
                        the inside of objects might contain the background color
    @param backgroundColor the background color.
    @param blurRadius If set to some fraction > 0.0, then the edges of the mask will be blurred
                        using a blur radius which is this fraction of the image size.
    @param maskScale  If set to < 1.0, then the effective size of the object (the area where
                        the mask includes the object) will be scaled down by this
                        amount. This can be useful when the outside of the object contains
                        some noise that you want to trim out and not include in the mask.

    @retval the mask as a PIL 'L' image, where 255 is areas that include the object, and 0
                      are areas that are background. If blurRadius is > 0, then it will
                      also contain values between 0 and 255 which act as compositing values.

    """

    image = imageIn.convert('L')
    bwImage = image.point(lambda x: (abs(x - backgroundColor) > threshold) * 255)

    if not fillHoles:
        mask = bwImage
    else:
        bwImage = ImageOps.expand(bwImage, 1, fill=0)
        maskColor = 128
        ImageDraw.floodfill(bwImage, (0, 0), maskColor)
        mask = bwImage.point(lambda x: (x != maskColor) * 255)
        mask = ImageOps.crop(mask, 1)

    # Are we reducing the object size?
    if maskScale < 1.0:
        newSize = [int(x * maskScale) for x in mask.size]
        reducedMask = mask.resize(newSize, Image.ANTIALIAS)
        sizeDiff = numpy.array(mask.size) - numpy.array(newSize)
        pos = [int(x / 2) for x in sizeDiff]
        mask = ImageChops.constant(mask, 0)
        mask.paste(reducedMask, tuple(pos))

    # Blur the mask
    if blurRadius > 0.0:
        radius = int(round(blurRadius * (mask.size[0] + mask.size[1]) / 2))
        if radius > 1:
            mask = blur(mask, radius=radius, edgeColor=0)
        else:
            import pdb; pdb.set_trace()

    return mask
开发者ID:kikoval,项目名称:pyHTM,代码行数:56,代码来源:__init__.py

示例3: fillImageFaster

# 需要导入模块: from PIL import ImageDraw [as 别名]
# 或者: from PIL.ImageDraw import floodfill [as 别名]
    def fillImageFaster(self, begin, paint, current, image):

        buffer = QBuffer()
        buffer.open(QBuffer.ReadWrite)

        image.save(buffer, "PNG")

        pil_im = Image.open(io.BytesIO(buffer.data()))
        ImageDraw.floodfill(pil_im, begin, (paint.red(), paint.green(), paint.blue()))

        self.image().image = QtGui.QImage(pil_im.convert("RGB").tobytes("raw", "RGB"), pil_im.size[0], pil_im.size[1], QtGui.QImage.Format_RGB888)
        self.update()
开发者ID:MikiLoz92,项目名称:pyqx,代码行数:14,代码来源:canvas.py

示例4: test_floodfill

# 需要导入模块: from PIL import ImageDraw [as 别名]
# 或者: from PIL.ImageDraw import floodfill [as 别名]
def test_floodfill():
    # Arrange
    im = Image.new("RGB", (w, h))
    draw = ImageDraw.Draw(im)
    draw.rectangle(bbox2, outline="yellow", fill="green")
    centre_point = (int(w/2), int(h/2))

    # Act
    ImageDraw.floodfill(im, centre_point, ImageColor.getrgb("red"))
    del draw

    # Assert
    assert_image_equal(im, Image.open("Tests/images/imagedraw_floodfill.png"))
开发者ID:alexkiro,项目名称:Pillow,代码行数:15,代码来源:test_imagedraw.py

示例5: test_floodfill

# 需要导入模块: from PIL import ImageDraw [as 别名]
# 或者: from PIL.ImageDraw import floodfill [as 别名]
    def test_floodfill(self):
        red = ImageColor.getrgb("red")

        for mode, value in [
            ("L", 1),
            ("RGBA", (255, 0, 0, 0)),
            ("RGB", red)
        ]:
            # Arrange
            im = Image.new(mode, (W, H))
            draw = ImageDraw.Draw(im)
            draw.rectangle(BBOX2, outline="yellow", fill="green")
            centre_point = (int(W/2), int(H/2))

            # Act
            ImageDraw.floodfill(im, centre_point, value)

            # Assert
            expected = "Tests/images/imagedraw_floodfill_"+mode+".png"
            im_floodfill = Image.open(expected)
            self.assert_image_equal(im, im_floodfill)

        # Test that using the same colour does not change the image
        ImageDraw.floodfill(im, centre_point, red)
        self.assert_image_equal(im, im_floodfill)

        # Test that filling outside the image does not change the image
        ImageDraw.floodfill(im, (W, H), red)
        self.assert_image_equal(im, im_floodfill)

        # Test filling at the edge of an image
        im = Image.new("RGB", (1, 1))
        ImageDraw.floodfill(im, (0, 0), red)
        self.assert_image_equal(im, Image.new("RGB", (1, 1), red))
开发者ID:hugovk,项目名称:Pillow,代码行数:36,代码来源:test_imagedraw.py

示例6: __init__

# 需要导入模块: from PIL import ImageDraw [as 别名]
# 或者: from PIL.ImageDraw import floodfill [as 别名]
 def __init__(self, simplemap):
     self.image = Image.new("RGB", simplemap.image.size)
     self.simple = simplemap
     ImageDraw.floodfill(self.image, (0, 0), (255, 255, 255))
     self.territories = set()
     draw = ImageDraw.Draw(self.image)
     self.territory_colours = territory_colours = simplemap.get_territories()
     self.inv_territory_colours = inv_territory_colours = dict([(v, k) for (k, v) in territory_colours.items()])
     for fillpass in range(3):
         for y in xrange(self.image.size[1]):
             for x in xrange(self.image.size[0]):
                 colour = simplemap.image.getpixel((x, y))
                 if fillpass == 1 and colour in territory_colours.values():
                     tid = inv_territory_colours[colour] * 100
                     n_x, n_y = x, y
                     neighbours = [(x + 1, y), (x, y + 1), (x - 1, y), (x, y - 1)]
                     neighbours = [(x if x > 0 else self.image.size[0] - 1, y) for (x, y) in neighbours]
                     neighbours = [(x if x < self.image.size[0] else 0, y) for (x, y) in neighbours]
                     neighbours = [(x, y if y > 0 else self.image.size[1] - 1) for (x, y) in neighbours]
                     neighbours = [(x, y if y < self.image.size[1] else 0) for (x, y) in neighbours]
                     neighbours = set(self.image.getpixel(neighbour) for neighbour in neighbours)
                     neighbours = set(
                         colour
                         for colour in neighbours
                         if colour[2] < 255 and colour != (0, 0, 0) and colour != (255, 0, 0)
                     )
                     if neighbours:
                         colour = max(neighbours)
                         tid = colour_to_territory_id(colour)
                     else:
                         tid = inv_territory_colours[colour] * 100
                         # generate a new tid
                         tid += 1
                         while tid in self.territories:
                             tid += 1
                         self.territories.add(tid)
                         colour = territory_id_to_colour(tid)
                     x, y = n_x, n_y
                     ImageDraw.floodfill(self.image, (x, y), colour)
                 elif colour == (255, 255, 255):
                     if x < self.image.size[0] - 1:
                         next_pixel = simplemap.image.getpixel((x + 1, y))
                         if fillpass == 2 and (next_pixel in territory_colours.values()):
                             # We're not in the sea
                             colour = self.image.getpixel((x + 1, y))[:2] + (255,)
                             draw.point((x, y), tuple(colour))
                             continue
                     draw.point((x, y), colour)
                 elif colour in set([(0, 0, 0), (255, 0, 0)]):
                     draw.point((x, y), colour)
开发者ID:MatthewWilkes,项目名称:roosk,代码行数:52,代码来源:map.py

示例7: DrawBalls

# 需要导入模块: from PIL import ImageDraw [as 别名]
# 或者: from PIL.ImageDraw import floodfill [as 别名]
    def DrawBalls(self, differentialMethod, step):
        # First, track the border for all balls and store
        # it to pos0 and edgePos. The latter will move along the border,
        # pos0 stays at the initial coordinates.
        for ball in self.balls:
            ball.pos0 = self.trackTheBorder(ball.pos + 1j)
            if ball.pos0 == None:
                ball.tracking = False
            else:
                ball.edgePos = ball.pos0
                ball.tracking = True
                # print "Done with tracking"

        loopIndex = 0
        while loopIndex < 200:
            loopIndex += 1
            for ball in self.balls:
                if not ball.tracking:
                    continue

                    # store the old coordinates
                old_pos = ball.edgePos

                # walk along the tangent, using chosen differential method
                ball.edgePos = differentialMethod(ball.edgePos, step, self.calcTangent)

                # correction step towards the border
                ball.edgePos, tmp = self.stepOnceTowardsBorder(ball.edgePos)

                draw = ImageDraw.Draw(self.image)
                draw.line((old_pos.real, old_pos.imag, ball.edgePos.real, ball.edgePos.imag), fill=self.color)
                del draw

                # check if we've gone a full circle or hit some other
                # edge tracker
                for ob in self.balls:
                    if ob.tracking:
                        if (ob is not ball) and abs(ob.pos0 - ball.edgePos) < step:  # or loopIndex > 3
                            ball.tracking = False

            tracking = 0
            for ball in self.balls:
                if ball.tracking:
                    tracking += 1
                if tracking == 0:
                    break
        for ball in self.balls:
            if ball.tracking:
                ball.pos = complex(round(ball.pos.real), round(ball.pos.imag))
                ImageDraw.floodfill(self.image, (ball.pos.real, ball.pos.imag), self.color)  # , self.color)
开发者ID:jmickela,项目名称:python-pil-metaballs,代码行数:52,代码来源:metaballs.py

示例8: test_floodfill_thresh

# 需要导入模块: from PIL import ImageDraw [as 别名]
# 或者: from PIL.ImageDraw import floodfill [as 别名]
    def test_floodfill_thresh(self):
        # floodfill() is experimental

        # Arrange
        im = Image.new("RGB", (W, H))
        draw = ImageDraw.Draw(im)
        draw.rectangle(BBOX2, outline="darkgreen", fill="green")
        centre_point = (int(W/2), int(H/2))

        # Act
        ImageDraw.floodfill(
            im, centre_point, ImageColor.getrgb("red"),
            thresh=30)

        # Assert
        self.assert_image_equal(
            im, Image.open("Tests/images/imagedraw_floodfill2.png"))
开发者ID:MarkLuro,项目名称:Pillow,代码行数:19,代码来源:test_imagedraw.py

示例9: floodFill

# 需要导入模块: from PIL import ImageDraw [as 别名]
# 或者: from PIL.ImageDraw import floodfill [as 别名]
def floodFill(canvas, origImage, edgeImage, color, filledImage=None):
    (width, height) = origImage.size
    edgePixels = edgeImage.load()
    fillRegionCoords = []
    temporaryFill = (100,100,100)
    for x in xrange(width):
        for y in xrange(height):
            if (edgePixels[x, y] == color):
                fillRegionCoords += [(x,y)]
                ImageDraw.floodfill(edgeImage, (x,y), temporaryFill)
                #fill temporarily to make sure fillRegionCoords does not have
                #multiple coordinates that would fill the same region
    if (filledImage == None):
        filledImage = Image.open(canvas.data.edgeImageFile)
    for (x,y) in fillRegionCoords:
        fillColor = regionColor(origImage, filledImage, (x,y))
        ImageDraw.floodfill(filledImage, (x,y), fillColor)
    return filledImage
开发者ID:sophiemli,项目名称:cartoonizer,代码行数:20,代码来源:cartoonizer.py

示例10: drawterritory

# 需要导入模块: from PIL import ImageDraw [as 别名]
# 或者: from PIL.ImageDraw import floodfill [as 别名]
def drawterritory(t, color=None):
    """Draw an entire territory (will draw in color provided, default is owning player's color)"""
    terr = territories[str(riskboard.territories[t].name)]
    
    #Create colored version of the image
    canvas.delete(terr.name) 
    
    if len(backcolors) > 0 and current_state.owners[t] is not None:
        for fp in terr.floodpoints:
            if color:
                ImageDraw.floodfill(terr.photo, fp, color)
            else:
                ImageDraw.floodfill(terr.photo, fp, hex_to_rgb(backcolors[current_state.owners[t]]))

    terr.currentimage = ImageTk.PhotoImage(terr.photo)
    canvas.create_image(terr.x, terr.y, anchor=Tkinter.NW, 
                            image=terr.currentimage, tags=(terr.name,))  
    drawarmy(t, 1)
开发者ID:GTalley,项目名称:PA3,代码行数:20,代码来源:risk_game_viewer.py

示例11: test_floodfill_border

# 需要导入模块: from PIL import ImageDraw [as 别名]
# 或者: from PIL.ImageDraw import floodfill [as 别名]
    def test_floodfill_border(self):
        # floodfill() is experimental

        # Arrange
        im = Image.new("RGB", (w, h))
        draw = ImageDraw.Draw(im)
        draw.rectangle(bbox2, outline="yellow", fill="green")
        centre_point = (int(w/2), int(h/2))

        # Act
        ImageDraw.floodfill(
            im, centre_point, ImageColor.getrgb("red"),
            border=ImageColor.getrgb("black"))
        del draw

        # Assert
        self.assert_image_equal(
            im, Image.open("Tests/images/imagedraw_floodfill2.png"))
开发者ID:jamesra,项目名称:Pillow,代码行数:20,代码来源:test_imagedraw.py

示例12: test_floodfill_border

# 需要导入模块: from PIL import ImageDraw [as 别名]
# 或者: from PIL.ImageDraw import floodfill [as 别名]
def test_floodfill_border():
    # floodfill() is experimental
    if hasattr(sys, 'pypy_version_info'):
        # Causes fatal RPython error on PyPy
        skip()

    # Arrange
    im = Image.new("RGB", (w, h))
    draw = ImageDraw.Draw(im)
    draw.rectangle(bbox2, outline="yellow", fill="green")
    centre_point = (int(w/2), int(h/2))

    # Act
    ImageDraw.floodfill(
        im, centre_point, ImageColor.getrgb("red"),
        border=ImageColor.getrgb("black"))
    del draw

    # Assert
    assert_image_equal(im, Image.open("Tests/images/imagedraw_floodfill2.png"))
开发者ID:gitsocket,项目名称:Pillow,代码行数:22,代码来源:test_imagedraw.py

示例13: imfill

# 需要导入模块: from PIL import ImageDraw [as 别名]
# 或者: from PIL.ImageDraw import floodfill [as 别名]
def imfill(arr, edge):
    """Fill holes in images.
    
    NOTE: dtype of input array will be temporarily converted uint8!
    This is because PIL's fromarray function works only with numpy
    arrays of data type 'uint8'. This may cause some data losses, so 
    proceed with caution!
    
    Input:
    arr -- a numpy.array to be floodfilled
    edge -- a value of edges
    """
    # using arr.astype to preserve array's dtype, as fromarray requires
    # array whose dtype is uint8
    img = Image.fromarray(arr.astype('uint8')) # read-only
    aimg = img.copy()
    ImageDraw.floodfill(aimg, (0,0), edge, edge)
    invimg = ImageChops.invert(aimg)
    invarr = asarray(invimg)
    arr[invarr==255] = edge
    return arr
开发者ID:laurarojas,项目名称:Radar_interpolation,代码行数:23,代码来源:radarlib.py

示例14: identify_objects

# 需要导入模块: from PIL import ImageDraw [as 别名]
# 或者: from PIL.ImageDraw import floodfill [as 别名]
    def identify_objects(self):
        im = copy.deepcopy(self.image)
        width, height = im.size

        dark_fill_val = 1
        light_fill_val = 254
        for x in range(width):
            for y in range(height):
                xy = (x, y)
                l_val = im.getpixel(xy)

                if l_val == 0:
                    ImageDraw.floodfill(im, xy, dark_fill_val)
                    self.objects.append(Object(xy, dark_fill_val))
                    dark_fill_val += 1
                elif l_val == 255:
                    ImageDraw.floodfill(im, xy, light_fill_val)
                    light_fill_val -= 1
                else:
                    for obj in self.objects:
                        if obj.l_val == l_val:
                            obj.add_pixel(xy)
                            break
开发者ID:wachwu,项目名称:CS7637,代码行数:25,代码来源:Figure.py

示例15: drawterritory

# 需要导入模块: from PIL import ImageDraw [as 别名]
# 或者: from PIL.ImageDraw import floodfill [as 别名]
def drawterritory(t, shaded):
    """Draw an entire territory (possibly shaded)"""
    risknetwork.draw_territory(t, shaded)
    terr = territories[t.name]

    #Create colored version of the image
    canvas.delete(terr.name)
    #print 'Drawing territory: ', t.name
    if hasattr(t.player, 'backcolor'):
        for fp in terr.floodpoints:
            #print 'Flood-filling', terr.name, ' territory'
            ImageDraw.floodfill(terr.photo, fp, hex_to_rgb(t.player.backcolor))

        #print 'Saving images'
        terr.shadedimage = ImageTk.PhotoImage(terr.photo.point(lambda x:x * 0))
        terr.currentimage = ImageTk.PhotoImage(terr.photo)
    if shaded:
        canvas.create_image(terr.x, terr.y, anchor=Tkinter.NW,
                            image=terr.shadedimage, tags=(terr.name,))
    else:
        canvas.create_image(terr.x, terr.y, anchor=Tkinter.NW,
                            image=terr.currentimage, tags=(terr.name,))
    drawarmy(riskengine.territories[terr.name], 1)
开发者ID:SanyamSatia,项目名称:Genghis,代码行数:25,代码来源:riskgui.py


注:本文中的PIL.ImageDraw.floodfill方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。