/ test / python / testpipeline / testimage / testimagehash.py
testimagehash.py
 1  """
 2  ImageHash module tests
 3  """
 4  
 5  import unittest
 6  
 7  from PIL import Image
 8  
 9  from txtai.pipeline import ImageHash
10  
11  # pylint: disable=C0411
12  from utils import Utils
13  
14  
15  class TestImageHash(unittest.TestCase):
16      """
17      ImageHash tests.
18      """
19  
20      @classmethod
21      def setUpClass(cls):
22          """
23          Caches an image to hash
24          """
25  
26          cls.image = Image.open(Utils.PATH + "/books.jpg")
27  
28      def testArray(self):
29          """
30          Test numpy return type
31          """
32  
33          ihash = ImageHash(strings=False)
34          self.assertEqual(ihash(self.image).shape, (64,))
35  
36      def testAverage(self):
37          """
38          Test average hash
39          """
40  
41          ihash = ImageHash("average")
42          self.assertIn(ihash(self.image), ["0859dd04bfbfbf00", "0859dd04ffbfbf00"])
43  
44      def testColor(self):
45          """
46          Test color hash
47          """
48  
49          ihash = ImageHash("color")
50          self.assertIn(ihash(self.image), ["1ffffe02000e000c0e0000070000", "1ff8fe03000e00070e0000070000"])
51  
52      def testDifference(self):
53          """
54          Test difference hash
55          """
56  
57          ihash = ImageHash("difference")
58          self.assertEqual(ihash(self.image), "d291996d6969686a")
59  
60      def testPerceptual(self):
61          """
62          Test perceptual hash
63          """
64  
65          ihash = ImageHash("perceptual")
66          self.assertEqual(ihash(self.image), "8be8418577b331b9")
67  
68      def testWavelet(self):
69          """
70          Test wavelet hash
71          """
72  
73          ihash = ImageHash("wavelet")
74          self.assertEqual(ihash(Utils.PATH + "/books.jpg"), "68015d85bfbf3f00")