在工程需要中,有时候需要将JPG压缩过的图像,变成没有经过压缩过的数据格式,
因此,使用VTK来做数据的类型转换。
过程如下:
- 使用VTK读取JPG图片
- 将JPG 转换成 vtkImageData, 再转换成 numpy 类型
- 保存 numpy 类型的数据到本地磁盘
代码如下:
#!/usr/bin/env python
# encoding: utf-8
import time
import vtk
import numpy as np
from vtk.util.numpy_support import vtk_to_numpy
# 使用VTK读取JPG图片
begin_time = time.time()
image_jpeg_reader = vtk.vtkJPEGReader()
image_jpeg_reader.SetFileName(r'D:/temp/result.jpg')
image_jpeg_reader.Update()
# 将JPG 转换成 vtkImageData, 再转换成 numpy 类型
img_result = image_jpeg_reader.GetOutput()
width, height, depth = img_result.GetDimensions()
sc = img_result.GetPointData().GetScalars()
arr = vtk_to_numpy(sc)
# 保存 numpy 类型的数据到本地磁盘
arr = np.reshape(arr, (width, height, 3))
raw_file_path = r'D:/temp/result_raw_{}_{}_{}.raw'.format(width, height, depth)
with open(raw_file_path, 'wb') as f:
f.write(arr)
print(r'cost time {}'.format(time.time()-begin_time))