Add Image.bbox(), Image.overlaps() and Image.combine().

This commit is contained in:
Andrey Golovizin 2014-08-15 14:21:20 +02:00
parent 3407bac38b
commit 5f7e6abcb9

View file

@ -167,6 +167,34 @@ class Image(object):
data = np.ma.masked_array(self.data, mask3, fill_value=255).filled()
return Image(data, self.x, self.y)
def bbox(self, other):
return (
min(self.left, other.left),
min(self.top, other.top),
max(self.right, other.right),
max(self.bottom, other.bottom),
)
def overlaps(self, other):
return not (self.right < other.left or other.left < self.right)
def combine(self, other):
if self.overlaps(other):
raise NotImplementedError
left, top, right, bottom = self.bbox(other)
width = right - left
height = bottom - top
selftop = self.top - top
othertop = other.top - top
selfleft = self.left - left
otherleft = other.left - left
data = np.zeros((height, width, self.shape[2]), self.data.dtype)
data.fill(255)
data[selftop:selftop + self.height, selfleft:selfleft + self.width] = self.data
data[othertop:othertop + other.height, otherleft:otherleft + other.width] = other.data
return Image(data, left, top)
def _iter_lines(self, min_space):
def iter_lines():
line_start = None