Example #1
0
    def testTwoObjectsOneSpanning(self):
        image = np.zeros([100, 200, 3], dtype=np.uint8)
        image[:, :, 0] = draw_square_by_corner(image[:, :, 0], 10, (5, 10),
                                               100)
        image[:, :, 1] = draw_square_by_corner(image[:, :, 1], 10, (5, 10),
                                               100)
        image[:, :, 2] = draw_square_by_corner(image[:, :, 2], 12, (5, 10),
                                               100)
        image[:, :, 1] = draw_square_by_corner(image[:, :, 1], 25, (45, 40),
                                               200)
        slices = mask_to_objects_3d(image, assume_unique_labels=True)

        self.assertIsInstance(slices, list)
        self.assertEqual(len(slices), 2, msg="found 2 objects")
        self.assertEqual(len(slices[0]), 3)
        self.assertEqual(slices[0][0].label, 100)
        self.assertEqual(slices[0][0].depth, 0)
        self.assertTrue(slices[0][0].polygon.equals(box(10, 5, 20, 15)))
        self.assertEqual(slices[0][1].label, 100)
        self.assertEqual(slices[0][1].depth, 1)
        self.assertTrue(slices[0][1].polygon.equals(box(10, 5, 20, 15)))
        self.assertEqual(slices[0][2].label, 100)
        self.assertEqual(slices[0][2].depth, 2)
        self.assertTrue(slices[0][2].polygon.equals(box(10, 5, 22, 17)))
        self.assertEqual(len(slices[1]), 1)
        self.assertEqual(slices[1][0].label, 200)
        self.assertEqual(slices[1][0].depth, 1)
        self.assertTrue(slices[1][0].polygon.equals(box(40, 45, 65, 70)))
Example #2
0
    def testAdjacentWithoutSeperation(self):
        image = np.zeros([300, 200], dtype=np.int)
        image = draw_square_by_corner(image, 50, (150, 50), color=255)
        image = draw_square_by_corner(image, 50, (150, 101), color=127)

        slices = mask_to_objects_2d(image)
        # sort by bounding box top left corner
        slices = sorted(slices, key=lambda s: s.polygon.bounds[:2])

        self.assertEqual(len(slices), 2)
        self.assertEqual(slices[0].label, 255)
        self.assertEqual(slices[1].label, 127)
Example #3
0
    def testSeveralObjects(self):
        image = np.zeros([300, 200], dtype=np.int)
        image = draw_square_by_corner(image, 50, (150, 50), color=255)
        image = draw_square_by_corner(image, 50, (205, 105), color=127)

        slices = mask_to_objects_2d(image)
        # sort by bounding box top left corner
        slices = sorted(slices, key=lambda s: s.polygon.bounds[:2])

        self.assertEqual(len(slices), 2)
        self.assertEqual(slices[0].label, 255)
        self.assertTrue(slices[0].polygon.equals(box(50, 150, 100, 200)),
                        msg="Polygon is equal")
        self.assertEqual(slices[1].label, 127)
        self.assertTrue(slices[1].polygon.equals(box(105, 205, 155, 255)),
                        msg="Polygon is equal")
Example #4
0
    def testOffset(self):
        image = np.zeros([300, 200], dtype=np.int)
        image = draw_square_by_corner(image, 100, (150, 50), color=255)

        slices = mask_to_objects_2d(image, offset=(255, 320))

        self.assertEqual(len(slices), 1)
        self.assertEqual(slices[0].label, 255)
        self.assertTrue(slices[0].polygon.equals(box(305, 470, 405, 570)),
                        msg="Polygon is equal")
Example #5
0
    def testExportOneSquare(self):
        image = np.zeros([300, 200], dtype=np.int)
        image = draw_square_by_corner(image, 100, (150, 50), color=255)

        slices = mask_to_objects_2d(image)

        self.assertEqual(len(slices), 1)
        self.assertEqual(slices[0].label, 255)
        self.assertTrue(slices[0].polygon.equals(box(50, 150, 150, 250)),
                        msg="Polygon is equal")