Beispiel #1
0
class TestRectangleMerger(TestCase):
    rect_a = Rectangle.from_2_pos(1, 1, 10, 5)
    rect_b = Rectangle.from_2_pos(11, 1.2, 13, 5.2)
    rect_c = Rectangle.from_2_pos(2, 3, 20, 10)
    merger = Merger()

    def test__merge_rectangle_to_pool(self):
        self.assertTrue(
            self.merger._is_rectangles_overlapped(self.rect_a, self.rect_c))
        self.assertFalse(
            self.merger._is_rectangles_overlapped(self.rect_a, self.rect_b))

    def test__merge_2_rectangles(self):
        rect = self.merger._merge_2_rectangles(self.rect_a, self.rect_c)
        expect_rect = Rectangle.from_2_pos(1, 1, 20, 10)
        self.assertEqual(rect, expect_rect,
                         "%s and %s not equal!" % (rect, expect_rect))

    def test__merge_all_rectangles(self):
        rects = [self.rect_a, self.rect_b, self.rect_c]
        merged_rects = self.merger.merge_rectangle_list(rects)
        expect_rects = [
            Rectangle.from_2_pos(1, 1, 13, 5.2),
            Rectangle.from_2_pos(2, 3, 20, 10)
        ]
        self.assertListEqual(merged_rects, expect_rects,
                             " ".join([r.__str__() for r in merged_rects]))
Beispiel #2
0
 def test__merge_all_rectangles(self):
     rects = [self.rect_a, self.rect_b, self.rect_c]
     merged_rects = self.merger.merge_rectangle_list(rects)
     expect_rects = [
         Rectangle.from_2_pos(1, 1, 13, 5.2),
         Rectangle.from_2_pos(2, 3, 20, 10)
     ]
     self.assertListEqual(merged_rects, expect_rects,
                          " ".join([r.__str__() for r in merged_rects]))
Beispiel #3
0
 def _merge_2_rectangles(self, rect_1, rect_2):
     return Rectangle.from_2_pos(
         rect_1.x1 < rect_2.x1 and rect_1.x1 or rect_2.x1,
         rect_1.y1 < rect_2.y1 and rect_1.y1 or rect_2.y1,
         rect_1.x2 > rect_2.x2 and rect_1.x2 or rect_2.x2,
         rect_1.y2 > rect_2.y2 and rect_1.y2 or rect_2.y2,
         rect_1.merged_times + rect_2.merged_times + 1)
Beispiel #4
0
 def _save_region_of_interest_with_margin(self, index, img, rect):
     max_x = len(img[0]) - 1
     max_y = len(img) - 1
     margin_x = int((rect.x2 - rect.x1) * self.width_margin_percent)
     margin_y = int((rect.y2 - rect.y1) * self.height_margin_percent)
     r = Rectangle.from_2_pos(
         rect.x1 - margin_x >= 0 and (rect.x1 - margin_x) or 0,
         rect.y1 - margin_y >= 0 and (rect.y1 - margin_y) or 0,
         rect.x2 + margin_x <= max_x and (rect.x2 + margin_x) or max_x,
         rect.y2 + margin_y <= max_y and (rect.y2 + margin_y) or max_y)
     roi = img[r.y1:r.y2, r.x1:r.x2]
     cv2.imwrite("%spart-%02d.jpg" % (self.output_path, index), roi)
Beispiel #5
0
 def test__merge_2_rectangles(self):
     rect = self.merger._merge_2_rectangles(self.rect_a, self.rect_c)
     expect_rect = Rectangle.from_2_pos(1, 1, 20, 10)
     self.assertEqual(rect, expect_rect,
                      "%s and %s not equal!" % (rect, expect_rect))