Example #1
0
 def test_Matrix3D2PIL(self):
     im = Image(self.mat3d[:,:180,:120])
     pil = self.im.asPIL()
     mat = im.asMatrix3D()
     for i in range(im.width):
         for j in range(im.height):
             for c in range(3):
                 self.assertAlmostEqual(pil.getpixel((i,j))[c],mat[c,i,j])
Example #2
0
 def test_PILToMatrix3D(self):
     pil = self.im.asPIL().resize((180,120))
     im = Image(pil)
     mat = im.asMatrix3D()
     for i in range(im.width):
         for j in range(im.height):
             for c in range(3):
                 self.assertAlmostEqual(pil.getpixel((i,j))[c],mat[c,i,j])
Example #3
0
 def test_PILToMatrix3D(self):
     pil = self.im.asPIL().resize((180, 120))
     im = Image(pil)
     mat = im.asMatrix3D()
     for i in range(im.width):
         for j in range(im.height):
             for c in range(3):
                 self.assertAlmostEqual(
                     pil.getpixel((i, j))[c], mat[c, i, j])
Example #4
0
 def test_Matrix3D2PIL(self):
     im = Image(self.mat3d[:, :180, :120])
     pil = self.im.asPIL()
     mat = im.asMatrix3D()
     for i in range(im.width):
         for j in range(im.height):
             for c in range(3):
                 self.assertAlmostEqual(
                     pil.getpixel((i, j))[c], mat[c, i, j])
Example #5
0
class _TestImage(unittest.TestCase):
    
    def setUp(self):
        # Assume these work correctly
        self.im     = Image(os.path.join(pyvision.__path__[0],"data","nonface","NONFACE_46.jpg"))
        self.pil    = self.im.asPIL()
        self.mat    = self.im.asMatrix2D()
        assert self.mat.shape[0] == 640
        assert self.mat.shape[1] == 480
        self.mat3d  = self.im.asMatrix3D()
        assert self.mat3d.shape[0] == 3
        assert self.mat3d.shape[1] == 640
        assert self.mat3d.shape[2] == 480
        self.opencv = self.im.asOpenCV()
            
    def test_PILToBufferGray(self):
        w,h = self.im.size
        buffer = self.im.toBufferGray(8)
        self.assertEqual(len(buffer),w*h)
        buffer = self.im.toBufferGray(32)
        self.assertEqual(len(buffer),4*w*h)
        buffer = self.im.toBufferGray(64)
        self.assertEqual(len(buffer),8*w*h)

    def test_Matrix3DToBufferGray(self):
        im = Image(self.mat3d)
        w,h = im.size
        buffer = im.toBufferGray(8)
        self.assertEqual(len(buffer),w*h)
        buffer = im.toBufferGray(32)
        self.assertEqual(len(buffer),4*w*h)
        buffer = im.toBufferGray(64)
        self.assertEqual(len(buffer),8*w*h)

    def test_Matrix2DToBufferGray(self):
        im = Image(self.mat)
        w,h = im.size
        buffer = im.toBufferGray(8)
        self.assertEqual(len(buffer),w*h)
        buffer = im.toBufferGray(32)
        self.assertEqual(len(buffer),4*w*h)
        buffer = im.toBufferGray(64)
        self.assertEqual(len(buffer),8*w*h)

    def test_PILToMatrix2D(self):
        im = self.im
        pil = im.asPIL().convert('L')
        pil = pil.resize((180,120))
        im = Image(pil)
        mat = im.asMatrix2D()
        for i in range(im.width):
            for j in range(im.height):
                self.assertAlmostEqual(pil.getpixel((i,j)),mat[i,j])
        
    def test_Matrix2DToPIL(self):
        im = Image(self.mat[:180,:120])
        pil = im.asPIL()
        mat = im.asMatrix2D()
        for i in range(im.width):
            for j in range(im.height):
                self.assertAlmostEqual(pil.getpixel((i,j)),mat[i,j])

    def test_PILToMatrix3D(self):
        pil = self.im.asPIL().resize((180,120))
        im = Image(pil)
        mat = im.asMatrix3D()
        for i in range(im.width):
            for j in range(im.height):
                for c in range(3):
                    self.assertAlmostEqual(pil.getpixel((i,j))[c],mat[c,i,j])

    def test_Matrix3D2PIL(self):
        im = Image(self.mat3d[:,:180,:120])
        pil = self.im.asPIL()
        mat = im.asMatrix3D()
        for i in range(im.width):
            for j in range(im.height):
                for c in range(3):
                    self.assertAlmostEqual(pil.getpixel((i,j))[c],mat[c,i,j])
        
    def test_PILToOpenCV(self):
        pil = self.im.asPIL().resize((180,120))
        im = Image(pil)
        cv = im.asOpenCV()
        #Uncomment this code to compare saved images
        #from opencv import highgui
        #highgui.cvSaveImage('/tmp/cv.png',cv)
        #pil.show()
        #Image('/tmp/cv.png').show()

        for i in range(im.width):
            for j in range(im.height):
                for c in range(3):
                    self.assertAlmostEqual(pil.getpixel((i,j))[c],ord(cv.tostring()[i*3+j*im.width*3+2-c]))
        
    def test_OpenCVToPIL(self):
        pil = self.im.asPIL().resize((180,120))
        im = Image(pil)
        cv = im.asOpenCV()
        pil = Image(cv).asPIL()

        for i in range(im.width):
            for j in range(im.height):
                for c in range(3):
                    self.assertAlmostEqual(pil.getpixel((i,j))[c],ord(cv.tostring()[i*3+j*im.width*3+2-c]))
        
    def test_OpenCVToPILGray(self):
        pil = self.im.asPIL().resize((180,120)).convert('L')
        im = Image(pil)
        cv = im.asOpenCV()
        im = Image(cv)
        pil = im.asPIL()
        
        #Uncomment this code to compare saved images
        #from opencv import highgui
        #highgui.cvSaveImage('/tmp/cv.png',cv)
        #pil.show()
        #Image('/tmp/cv.png').show()
        
        # TODO: There seems to be data loss in the conversion from pil to opencv and back.  Why?
        #for i in range(im.width):
        #    for j in range(im.height):
        #        self.assertAlmostEqual(pil.getpixel((i,j)),ord(cv.imageData[i*3+j*im.width*3]))
        
    def test_BufferToOpenCV(self):
        pil = self.im.asPIL().resize((180,120))
        im = Image(pil)
        cvim = im.asOpenCV()
        buffer = im.toBufferRGB(8)

        for i in range(im.width):
            for j in range(im.height):
                for c in range(3):
                    self.assertAlmostEqual(ord(buffer[i*3+j*im.width*3+c]),ord(cvim.tostring()[i*3+j*im.width*3+2-c]))
     
    def test_asOpenCVBW(self):
        pass #TODO: Create tests for this method.