pillow/PIL库
imageio库
结合pillow和imageio给出一个我测试的例子
import numpy as np
import imageio
from PIL import Image #PIL pakage name is Pillow
img=imageio.imread(r'G:\leopard.jpg')
high,width,ichannel=img.shape
print(type(img))
print(img.shape)
imageio.imwrite(r'G:\leopard_i1.jpg',img)
imageio.imwrite(r'G:\leopard_i2.jpg',np.float32(img/10)) # automatic brightness adjust
imageio.imwrite(r'G:\leopard_i3.jpg',np.uint8(img/10))
im = Image.open(r'G:\leopard.jpg')
print(type(im))
in_data = np.asarray(im, dtype=np.uint8)
print(type(in_data))
print(in_data.shape)
new_im = Image.fromarray(in_data) # np.uint8, or TypeError: Cannot handle this data type
# new_im.show()
new_im.save(r'G:\leopard_p1.jpg')
我发现一些奇怪的现象:
1,如果RGB三个通道灰度值都特别相似,保存为jpg时会自动变成只有一个通道的灰度图。保存为png和bmp则没有了这个问题
2,imageio浮点图像会自动亮度调节,手动先转换为uint8会没有问题
TIFF图像,pylibtiff库
Usage example (libtiff wrapper)
from libtiff import TIFF
# to open a tiff file for reading:
tif = TIFF.open('filename.tif', mode='r')
# to read an image in the currect TIFFdirectory and return it as numpy array:
image = tif.read_image()
# to read all images in a TIFF file:
for image in tif.iter_images(): # do stuffwith image
# to open a tiff file for writing:
tif = TIFF.open('filename.tif', mode='w')
# to write a image to tiff file
tif.write_image(image)
Usage example (pure Python module)
from libtiff import TIFFfile, TIFFimage
# to open a tiff file for reading
tif = TIFFfile('filename.tif')
# to return memmaps of images and sample names (eg channel names,SamplesPerPixel>=1)
samples, sample_names = tiff.get_samples()
# to create a tiff structure from image data
tiff = TIFFimage(data, description='')
# to write tiff structure to file
tiff.write_file('filename.tif', compression='none') # or 'lzw'
del tiff # flushes data to disk