示例#1
0
    def test_corner(self):
        # Create a corner detector pattern
        mop = ImageMorph.MorphOp(
            patterns=['1:(... ... ...)->0', '4:(00. 01. ...)->1'])
        count, Aout = mop.apply(self.A)
        self.assertEqual(count, 5)
        self.assert_img_equal_img_string(
            Aout, """
                                         .......
                                         .......
                                         ..1.1..
                                         .......
                                         ..1.1..
                                         .......
                                         .......
                                         """)

        # Test the coordinate counting with the same operator
        coords = mop.match(self.A)
        self.assertEqual(len(coords), 4)
        self.assertEqual(tuple(coords), ((2, 2), (4, 2), (2, 4), (4, 4)))

        coords = mop.get_on_pixels(Aout)
        self.assertEqual(len(coords), 4)
        self.assertEqual(tuple(coords), ((2, 2), (4, 2), (2, 4), (4, 4)))
示例#2
0
    def test_load_invalid_mrl(self):
        # Arrange
        invalid_mrl = 'Tests/images/hopper.png'
        mop = ImageMorph.MorphOp()

        # Act / Assert
        with self.assertRaises(Exception) as e:
            mop.load_lut(invalid_mrl)
        self.assertEqual(str(e.exception), 'Wrong size operator file!')
示例#3
0
 def test_no_operator_loaded(self):
     mop = ImageMorph.MorphOp()
     with self.assertRaises(Exception) as e:
         mop.apply(None)
     self.assertEqual(str(e.exception), 'No operator loaded')
     with self.assertRaises(Exception) as e:
         mop.match(None)
     self.assertEqual(str(e.exception), 'No operator loaded')
     with self.assertRaises(Exception) as e:
         mop.save_lut(None)
     self.assertEqual(str(e.exception), 'No operator loaded')
示例#4
0
    def test_set_lut(self):
        # Arrange
        lb = ImageMorph.LutBuilder(op_name='corner')
        lut = lb.build_lut()
        mop = ImageMorph.MorphOp()

        # Act
        mop.set_lut(lut)

        # Assert
        self.assertEqual(mop.lut, lut)
示例#5
0
    def test_roundtrip_mrl(self):
        # Arrange
        tempfile = self.tempfile('temp.mrl')
        mop = ImageMorph.MorphOp(op_name='corner')
        initial_lut = mop.lut

        # Act
        mop.save_lut(tempfile)
        mop.load_lut(tempfile)

        # Act / Assert
        self.assertEqual(mop.lut, initial_lut)
示例#6
0
 def test_erosion8(self):
     # erosion8
     mop = ImageMorph.MorphOp(op_name='erosion8')
     count, Aout = mop.apply(self.A)
     self.assertEqual(count, 8)
     self.assert_img_equal_img_string(
         Aout, """
                                      .......
                                      .......
                                      .......
                                      ...1...
                                      .......
                                      .......
                                      .......
                                      """)
示例#7
0
 def test_edge(self):
     # edge
     mop = ImageMorph.MorphOp(op_name='edge')
     count, Aout = mop.apply(self.A)
     self.assertEqual(count, 1)
     self.assert_img_equal_img_string(
         Aout, """
                                      .......
                                      .......
                                      ..111..
                                      ..1.1..
                                      ..111..
                                      .......
                                      .......
                                      """)
示例#8
0
 def test_erosion4(self):
     # erosion4
     mop = ImageMorph.MorphOp(op_name='dilation4')
     count, Aout = mop.apply(self.A)
     self.assertEqual(count, 12)
     self.assert_img_equal_img_string(
         Aout, """
                                      .......
                                      ..111..
                                      .11111.
                                      .11111.
                                      .11111.
                                      ..111..
                                      .......
                                      """)
示例#9
0
 def test_dialation8(self):
     # dialation8
     mop = ImageMorph.MorphOp(op_name='dilation8')
     count, Aout = mop.apply(self.A)
     self.assertEqual(count, 16)
     self.assert_img_equal_img_string(
         Aout, """
                                      .......
                                      .11111.
                                      .11111.
                                      .11111.
                                      .11111.
                                      .11111.
                                      .......
                                      """)
示例#10
0
    def test_non_binary_images(self):
        im = hopper('RGB')
        mop = ImageMorph.MorphOp(op_name="erosion8")

        with self.assertRaises(Exception) as e:
            mop.apply(im)
        self.assertEqual(str(e.exception),
                         'Image must be binary, meaning it must use mode L')
        with self.assertRaises(Exception) as e:
            mop.match(im)
        self.assertEqual(str(e.exception),
                         'Image must be binary, meaning it must use mode L')
        with self.assertRaises(Exception) as e:
            mop.get_on_pixels(im)
        self.assertEqual(str(e.exception),
                         'Image must be binary, meaning it must use mode L')
示例#11
0
 def test_negate(self):
     # Test 'N' for negate
     mop = ImageMorph.MorphOp(
         patterns=['1:(... ... ...)->0', 'N:(00. 01. ...)->1'])
     count, Aout = mop.apply(self.A)
     self.assertEqual(count, 8)
     self.assert_img_equal_img_string(
         Aout, """
                                      .......
                                      .......
                                      ..1....
                                      .......
                                      .......
                                      .......
                                      .......
                                      """)
示例#12
0
 def test_mirroring(self):
     # Test 'M' for mirroring
     mop = ImageMorph.MorphOp(
         patterns=['1:(... ... ...)->0', 'M:(00. 01. ...)->1'])
     count, Aout = mop.apply(self.A)
     self.assertEqual(count, 7)
     self.assert_img_equal_img_string(
         Aout, """
                                      .......
                                      .......
                                      ..1.1..
                                      .......
                                      .......
                                      .......
                                      .......
                                      """)