如何解决将多个 png 拼接成一个 h5 图像 h5py
我在搅拌机中创建了一个模型。从这里开始,我通过该模型的 y 平面进行了 2d 切片,导致以下结果。
600 个 png 文件,每个文件对应一个 ylocation,即 y=0、y=0.1 等 每个 png 文件的分辨率为 500 x 600。
我现在尝试在将 .h5 加载到某些软件之前使用 python 将 600 个 png 合并到一个 h5 文件中。我发现每个单独的 png 文件都可以正常读取并且看起来很棒。然而,当我查看最终的 3d 图像时,图像会有些拉伸,我不确定这是如何创建的。
图像被调整大小(从 600x600 到 500x600,但我已经检查过,这不是拉伸的原因)。我想知道为什么我要在其他平面(不是 y 平面)中引入这种拉伸。
这是我的代码,请注意这里有一些工作正在进行中,因此我将数据集附加到列表中(这将用于以后的代码)
from PIL import Image
import sys
import os
import h5py
import numpy as np
import cv2
from datetime import datetime
dir_path = os.path.dirname(os.path.realpath(__file__))
sys.path.append(dir_path + '//..//..')
Xlen=500
Ylen=600
Zlen=600
directory=dir_path+"/LowPolyA21/"
for filename in os.listdir(directory):
if fnmatch.fnmatch(filename,'*.png'):
image = Image.open(directory+filename)
new_image = image.resize((Zlen,Xlen))
new_image.save(directory+filename)
dataset = np.zeros((Xlen,Zlen,Ylen),np.float)
# traverse all the pictures under the specified address
cnt_num = 0
img_list = sorted(os.listdir(directory))
os.chdir(directory)
for img in (img_list):
if img.endswith(".png"):
gray_img = cv2.imread(img,0)
dataset[:,:,cnt_num] = gray_img
cnt_num += 1
dataset[dataset == 0] = -1
dataset=dataset.swapaxes(1,2)
datasetlist=[]
datasetlist.append(dataset)
dz_dy_dz = (float(0.001),float(0.001),float(0.001))
for j in range(Xlen):
for k in range(Ylen):
for l in range(Zlen):
if datasetlist[i][j,k,l]>1:
datasetlist[i][j,l]=1
now = datetime.now()
timestamp = now.strftime("%d%m%Y_%H%M%S%f")
out_h5_path='voxelA_'+timestamp+'_flipped'
out_h5_path2='voxelA_'+timestamp+'_flipped.h5'
with h5py.File(out_h5_path2,'w') as f:
f.attrs['dx_dy_dz'] = dz_dy_dz
f['data'] = datasetlist[i] # Write data to the file's primary key data below
未拉伸的图像示例(在 y 平面中)
具有拉伸的图像示例(在 x 平面中)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。