Add Image.color and PageObject.color.
This commit is contained in:
parent
44c2cce96e
commit
a44091b570
2 changed files with 15 additions and 0 deletions
|
|
@ -18,6 +18,7 @@ import itertools
|
|||
from io import BytesIO
|
||||
|
||||
import numpy as np
|
||||
from scipy.stats.mstats import mode
|
||||
from skimage.io import imread, imsave
|
||||
|
||||
from .utils import cached_property, pairwise
|
||||
|
|
@ -162,6 +163,16 @@ class Image(object):
|
|||
def isspace(self):
|
||||
return not is_nonblank(self.bitmap)
|
||||
|
||||
@cached_property
|
||||
def color(self):
|
||||
"""Return the most frequent foreground color."""
|
||||
if self.isspace:
|
||||
return None
|
||||
mask3 = np.dstack([~self.bitmap] * 3)
|
||||
colors = np.ma.MaskedArray(self.data, mask3).reshape(-1, 3)
|
||||
modes, counts = mode(colors)
|
||||
return tuple(modes[0])
|
||||
|
||||
def serialize(self):
|
||||
"""Serialize the image as some hashable object."""
|
||||
bitmap = self.data.astype(np.uint8).tostring()
|
||||
|
|
|
|||
|
|
@ -80,6 +80,10 @@ class PageObject(object):
|
|||
def ycenter(self):
|
||||
return (self.bottom - self.top) / 2
|
||||
|
||||
@property
|
||||
def color(self):
|
||||
return self.image.color
|
||||
|
||||
def fits(self, left, top, right, bottom):
|
||||
"""Return True if the glyph fits into the given bounding box."""
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue