你可以使用
pyvips
来完成这个操作:
import pyvips
import numpy as np
format_to_dtype = {
'uchar': np.uint8,
'char': np.int8,
'ushort': np.uint16,
'short': np.int16,
'uint': np.uint32,
'int': np.int32,
'float': np.float32,
'double': np.float64,
'complex': np.complex64,
'dpcomplex': np.complex128,
}
def vips2numpy(vi):
return np.ndarray(buffer=vi.write_to_memory(),
dtype=format_to_dtype[vi.format],
shape=[vi.height, vi.width, vi.bands])
vipsim = pyvips.Image.new_from_file("iPhone.heic", access='sequential')
print(f'Dimensions: {vipsim.width}x{vipsim.height}')
na = vips2numpy(vipsim)
print(f'Numpy array dimensions: {na.shape}, dtype:{na.dtype}')
示例输出
Dimensions: 3024x4032
Numpy array dimensions: (4032, 3024, 3), dtype:uint8