mirror of
				https://github.com/python-pillow/Pillow.git
				synced 2025-11-04 09:57:43 +03:00 
			
		
		
		
	tests for img -> numpy.array
This commit is contained in:
		
							parent
							
								
									753a3266e8
								
							
						
					
					
						commit
						ca35a9d65d
					
				| 
						 | 
				
			
			@ -1,6 +1,7 @@
 | 
			
		|||
from tester import *
 | 
			
		||||
 | 
			
		||||
from PIL import Image
 | 
			
		||||
import struct
 | 
			
		||||
 | 
			
		||||
try:
 | 
			
		||||
    import site
 | 
			
		||||
| 
						 | 
				
			
			@ -65,10 +66,43 @@ def test_3d_array():
 | 
			
		|||
    assert_image(Image.fromarray(a[:, :, 1]), "L", (10, 10))
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def _test_img_equals_nparray(img, np):
 | 
			
		||||
    assert_equal(img.size, np.shape[0:2])
 | 
			
		||||
    px = img.load()
 | 
			
		||||
    for x in xrange(0, img.size[0], img.size[0]/10):
 | 
			
		||||
        for y in xrange(0, img.size[1],  img.size[1]/10):
 | 
			
		||||
            assert_deep_equal(px[x,y], np[y,x])
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def test_16bit():
 | 
			
		||||
    img = Image.open('Tests/images/12bit.cropped.tif')
 | 
			
		||||
    px = img.load()
 | 
			
		||||
    np_img = numpy.array(img)
 | 
			
		||||
    assert_equal(np_img.shape, (64,64))
 | 
			
		||||
    assert_equal(px[1,1],np_img[1,1])
 | 
			
		||||
    _test_img_equals_nparray(img, np_img)
 | 
			
		||||
    assert_equal(np_img.dtype, numpy.dtype('uint16'))
 | 
			
		||||
 | 
			
		||||
def test_to_array():
 | 
			
		||||
 | 
			
		||||
    def _to_array(mode, dtype):
 | 
			
		||||
        img = lena(mode)            
 | 
			
		||||
        np_img = numpy.array(img)
 | 
			
		||||
        _test_img_equals_nparray(img, np_img)
 | 
			
		||||
        assert_equal(np_img.dtype, numpy.dtype(dtype))
 | 
			
		||||
    
 | 
			
		||||
     
 | 
			
		||||
    modes = [("L", 'uint8'),
 | 
			
		||||
             ("I", 'int32'),
 | 
			
		||||
             ("F", 'float32'),
 | 
			
		||||
             ("RGB", 'uint8'),
 | 
			
		||||
             ("RGBA", 'uint8'),
 | 
			
		||||
             ("RGBX", 'uint8'),
 | 
			
		||||
             ("CMYK", 'uint8'),
 | 
			
		||||
             ("YCbCr", 'uint8'),
 | 
			
		||||
             ("I;16", 'uint16'),
 | 
			
		||||
             ("I;16B", '>u2'),
 | 
			
		||||
             ("I;16L", 'uint16'),
 | 
			
		||||
             ]
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    for mode in modes:
 | 
			
		||||
        assert_no_exception(lambda: _to_array(*mode))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -67,6 +67,19 @@ def assert_equal(a, b, msg=None):
 | 
			
		|||
    else:
 | 
			
		||||
        failure(msg or "got %r, expected %r" % (a, b))
 | 
			
		||||
 | 
			
		||||
def assert_deep_equal(a, b, msg=None):
 | 
			
		||||
    try:
 | 
			
		||||
        if len(a) == len(b):
 | 
			
		||||
            if all([x==y for x,y in zip(a,b)]):
 | 
			
		||||
                success()
 | 
			
		||||
            else:
 | 
			
		||||
                failure(msg or "got %s, expected %s" % (a,b))
 | 
			
		||||
        else:
 | 
			
		||||
            failure(msg or "got length %s, expected %s" % (len(a), len(b)))                 
 | 
			
		||||
    except:
 | 
			
		||||
        assert_equal(a,b,msg)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def assert_match(v, pattern, msg=None):
 | 
			
		||||
    import re
 | 
			
		||||
    if re.match(pattern, v):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user