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

标签 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

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

最佳答案

要从给定的文件路径中仅提取文件名,可以使用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

关于python - 引入高斯模糊后,以原始名称保存多张图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56825169/

相关文章:

image - 有人能用 opencv 2.4.3 打开这个 jpg 吗?

c++ - 如何在 OpenCV Mat 中保留固定的缓冲区大小?

c++ - 带加速度的卡尔曼滤波器

python - 在 Python GUI (GTK) 中拖放文件

python - 获取python多处理池中worker的唯一ID

c++ - 在 OpenCV 中将 vector 转换为垫子

python - 如何不通过对话框直接保存图片?

python - 如何使用 Python YouTube API 收集特定视频评论的所有作者的个人信息(年龄、性别......)

python - 过滤字典中常见的子字典键

python - Pandas:如何比较导入的 csv 文件的列以确保它们相同?