import os
import pydicom
from PIL import Image
#LIDC_IDRI原始数据集转JPEG
def creat_path(output_folder,lidc,is_dir=True,image=Image):
jpeg_number=os.path.join(output_folder, lidc)#F:\data\train_jpeg\LIDC-IDRI-0875
if not os.path.exists(jpeg_number):
if is_dir:
os.mkdir(jpeg_number)
else:
#如果文件存在则pass否则保存
image = image.convert('RGB')
image.save(jpeg_number, 'JPEG')
# 删除JPG文件
jpeg_number2 = jpeg_number.replace("jpeg", "jpg")
if os.path.exists(jpeg_number2):
os.remove(jpeg_number2)
return jpeg_number
def save_final(number_dir1, dir_name2,jpeg_number1):
number_dir2 = os.path.join(number_dir1, dir_name2) # F:\data\train\LIDC-IDRI-0875\256245.25456\54646.6545
jpeg_number2 = creat_path(jpeg_number1, dir_name2) # F:\data\train_jpeg\LIDC-IDRI-0875\256245.25456\54646.6545
for file in os.listdir(number_dir2):
if file.endswith('.dcm'):
ds = pydicom.dcmread(os.path.join(number_dir2, file))
# 在这里可以根据窗宽窗位信息对图像进行处理
image = ds.pixel_array
# 将图像数据转换为PIL Image对象
try:
image = Image.fromarray(image)
except TypeError:
pass
else:
# 设置输出文件路径和文件名
output_file = os.path.splitext(file)[0] + '.jpeg'
# 保存图像为JPEG文件
creat_path(jpeg_number2, output_file, is_dir=False, image=image)
def save_img(LIDC_IDRI_number, dir_name,jpeg_number):
number_dir1 = os.path.join(LIDC_IDRI_number, dir_name) # F:\data\train\LIDC-IDRI-0875\256245.25456
jpeg_number1 = creat_path(jpeg_number, dir_name) # F:\data\train_jpeg\LIDC-IDRI-0875\256245.25456
# 该部分部分mask数据(选择抛弃)未做处理
dir_name2 = os.listdir(number_dir1)
for dirname2 in dir_name2:
save_final(number_dir1, dirname2, jpeg_number1)
# 设置输入和输出文件夹路径
def main():
input_folder = r'F:\data\train'
output_folder = r'F:\data\train_jpeg'
LIDC_IDRI_list=os.listdir(input_folder)
add_=0
for lidc in LIDC_IDRI_list:
LIDC_IDRI_number=os.path.join(input_folder, lidc)#F:\data\train\LIDC-IDRI-0875
jpeg_number=creat_path(output_folder,lidc)#F:\data\train_jpeg\LIDC-IDRI-0875
#该部分部分mask数据(选择抛弃)未做处理
dir_name=os.listdir(LIDC_IDRI_number)
for dirname1 in dir_name:
save_img(LIDC_IDRI_number, dirname1,jpeg_number)
add_+=1
print(add_/len(LIDC_IDRI_list))
if __name__ == '__main__':
main()
r""""
F:\data\train
F:\data\train\LIDC-IDRI-0875\w\e
"""
LIDC_IDRI原始数据集转JPEG
于 2023-11-30 16:22:45 首次发布