我用cv2
和编写了一个去噪函数concurrent.futures
,用于我的训练和测试图像数据。
功能(当前)如下:
def denoise_single_image(img_path):
nonlocal data
img = cv2.imread(f'../data/jpeg/{data}/{img_path}')
dst = cv2.fastNlMeansDenoising(img, 10,10,7,21)
cv2.imwrite(f'../processed_data/jpeg/{data}/{img_path}', dst)
print(f'{img_path} denoised.')
def denoise(data):
img_list = os.listdir(f'../data/jpeg/{data}')
with concurrent.futures.ProcessPoolExecutor() as executor:
tqdm.tqdm(executor.map(denoise_single_image, img_list))
data
必要时为train
或test
;img_list
是该目录中所有图像名称的列表。
需要先创建denoise_single_image()
函数denoise()
,否则denoise()
无法识别;但我需要data
在创建之前定义denoise_single_image()
. 这似乎是一个 catch-22,除非我能弄清楚如何告诉denoise_single_image()
引用存在于上一级的变量。
nonlocal
不起作用,因为它假定data
已在此环境中定义。有什么办法可以让它工作吗?