引入高斯模糊后,以原始名称保存多张图像

时间:2019-06-30 13:22:26

标签: python opencv

我有Python代码,该代码从名为Disparity的文件夹中读取54张图像,并将高斯模糊应用于这些图像,然后将它们写入一个位置。代码如下:

path = "Disparity/*.png"

for bb,file in enumerate (glob.glob(path)):
    a = cv2.imread(file)
    blur = cv2.GaussianBlur(a, (5, 5), random.randint(3, 10))
    cv2.imwrite('GaussianBlur{}.jpg'.format(bb), blur)

运行此代码后,我期望它读取的第一个图像为a.png,第二个图像为b.png

这两个图像应另存为a_GaussianBlur0.jpgb_GaussianBlur.jpg

请告诉我如何获得原始名称以及经过修改的名称?

2 个答案:

答案 0 :(得分:1)

要从给定的文件路径中仅提取文件名,可以使用Python os.path.basename()函数。这也将给您扩展。然后os.path.splitext()可以仅返回基本文件名。然后可以将其用于构建新的输出文件名:

import os

path = "Disparity/*.png"

for index, filename in enumerate(glob.glob(path)):
    a = cv2.imread(filename)
    blur = cv2.GaussianBlur(a, (5, 5), random.randint(3, 10))
    basename = os.path.splitext(os.path.basename(filename))[0]
    cv2.imwrite(f'{basename}_Gaussian{index}.png')

因此,如果您有三个文件['abc.png', 'def.png', 'ghi.png'],则输出文件名将为:

abc_Gussian0.png
def_Gussian1.png
ghi_Gussian2.png

答案 1 :(得分:0)

我想回答自己的问题... 我必须在代码中进行以下更改:

最后一行代码是:-> cv2.imwrite('GaussianBlur {}。jpg'.format(bb),blur)

这应该像:-> cv2.imwrite(file +'GaussianBlur {}。jpg'.format(bb),blur)

我在这里添加了文件,因为从Disparity文件夹读取的文件的所有名称都在File变量内。通过添加文件,我实际上是将原始名称添加到单个图像中