我编写了一个模块,它获取目录中的所有 TIFF 图像,对每个图像文件中的所有帧进行平均,并将平均图像保存到由以下指定的自动生成的子目录中outputPath:def average_tiff_frames(inputPath): ''' This function opens all TIFF image files in a directory, averages over all frames within each TIFF file, and saves the averaged images to a subdirectory. Parameters ---------- inputPath : string Absolute path to the raw TIFF files ''' import datetime import os import numpy as np from PIL import Image # Read image file names, create output folder while True: try: inputPath = os.path.join(inputPath, '') # Add trailing slash or backslash to the input path if missing filenames = [filename for filename in os.listdir(inputPath) if filename.endswith(('.tif', '.TIF', '.tiff', '.TIFF')) and not filename.endswith(('_avg.tif'))] outputPath = os.path.join(inputPath, datetime.datetime.now().strftime('%Y%m%dT%H%M%S'), '') os.mkdir(outputPath) break except FileNotFoundError: print('TIFF file not found - or - frames in TIFF file already averaged (file name ends with "_avg.tif")') # Open image files, average over all frames, save averaged image files for filename in filenames: img = Image.open(inputPath + filename) width, height = img.size NFrames = img.n_frames imgArray = np.zeros((height, width)) # Ordering of axes: img.size returns (width, height), np.zeros takes (rows, columns) for i in range(NFrames): img.seek(i) imgArray += np.array(img) i += 1 imgArrayAverage = imgArray / NFrames imgAverage = Image.fromarray(imgArrayAverage) imgAverage.save(outputPath + filename.rsplit('.')[0] + '_avg' + '.tif') img.close() return outputPath这里有什么问题吗?我的第一个想法是,它outputPath是循环本地的while True: try,并且在 后被破坏break,所以我outputPath = ''在循环之前实例化了一个空字符串,但这没有帮助。
1 回答
一只名叫tom的猫
TA贡献1906条经验 获得超3个赞
您并不是试图在循环之外访问变量,而是试图完全在方法之外访问它。该方法返回您要查找的值,因此将该值设置为变量:
outputPath = average_tiff_frames(inputPath)
print(outputPath)
或者直接打印:
print(average_tiff_frames(inputPath))
添加回答
举报
0/150
提交
取消