python画像の読み書きのいくつかの方法、PIL、imageio、pylibtiff
3029 ワード
scikit-imageは豊富な画像の読み書き、処理操作を提供します
リファレンス
【Tensorflow】アシストツール編——scikit-image紹介
読み書き浮動小数点TIFF画像を直接サポート
pillow/PELライブラリ
https://pillow.readthedocs.io/en/5.1.x/index.html
imageioライブラリ
http://imageio.readthedocs.io/en/latest/index.html
http://imageio.github.io/
pillowとimageioを組み合わせて私のテストの例を示します
奇妙な現象を発見しました
1,RGBの3チャネルの階調値が特に似ている場合,jpgとして保存すると自動的に1チャネルのみの階調図となる.pngとbmpに保存するとこの問題はありません
2,imageio浮動小数点画像は自動的に明るさが調整され、手動でuint 8に変換しても問題ありません
MATLAB matファイルの読み書き
TIFFイメージ、pylibtiffライブラリ
https://github.com/pearu/pylibtiff
Usage example (libtiff wrapper)
Usage example (pure Python module)
リファレンス
【Tensorflow】アシストツール編——scikit-image紹介
読み書き浮動小数点TIFF画像を直接サポート
from skimage import io
img = io.imread('testimg.tif')
import numpy as np
data=np.random.random([100,100])
io.imsave('rand_data.tif',np.float32(data))
pillow/PELライブラリ
https://pillow.readthedocs.io/en/5.1.x/index.html
imageioライブラリ
http://imageio.readthedocs.io/en/latest/index.html
http://imageio.github.io/
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の3チャネルの階調値が特に似ている場合,jpgとして保存すると自動的に1チャネルのみの階調図となる.pngとbmpに保存するとこの問題はありません
2,imageio浮動小数点画像は自動的に明るさが調整され、手動でuint 8に変換しても問題ありません
MATLAB matファイルの読み書き
import scipy.io as sio
# load mean and std
matfile = sio.loadmat(meanstd_file)
test_mean = np.array(matfile['mean_test'])
test_std = np.array(matfile['std_test'])
# Save predictions to a matfile to open later in matlab
mdict = {"Recovery": Recovery}
sio.savemat(savename, mdict)
io.imsave('Recovery.tif', np.float32(Recovery))
TIFFイメージ、pylibtiffライブラリ
https://github.com/pearu/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