将图像写入与输入文件同名的文件夹中

write images into a folder with a similar name as input files

我有一个图像目录,我正在尝试对它们进行一些图像处理,并将结果图像写入另一个文件夹,并以其原始名称作为扩展名。

我的问题是:如何将图片的名字写成与原名相似的名字? 这是我写的代码:

img_dir="/path to original folder/images"
data_path=os.path.join(img_dir,'*g')
files=glob.glob(data_path)
data=[]
    
i = 0
for f1 in files:
     img=cv2.imread(f1)
     data.append(img)
    
    #####################################################################
        #############Image processing part
    ###################################################################
    
         path = '/path to new folder/'
         cv2.imwrite("{}{}_{:07d}.jpg".format(path,f1.strip(".jpg"), i), result)        
         i+=1
    

详细的答案是;

您可以使用 format 连接字符串、整数、浮点数、布尔值等,而无需使用 str.

转换为字符串
cv2.imwrite("{}result_{}_{:07d}.jpg".format(path,f1, i), result)

每个 {}format()pathf1i 的每个值。第一个用于 path,第二个用于您的原始文件名 (f1)。最后一个是 i。这里因为你想要 7 位数,你添加 :07d 然后它需要 i 并转换为 0000001。如果 i 是 101,则它转换为 0000101

注意: 如果 f1 有类似 jpg 的扩展名,您可以简单地使用:

cv2.imwrite("{}result_{}_{:07d}.jpg".format(path,f1.strip(".jpg"), i), result)

假设您有以下变量;

f1 = "00008_8_007004.jpg"
path = '/path to new folder/'
i = 1
>>> "{}{}_{:07d}.jpg".format(path,f1.strip(".jpg"), i)
'/path to new folder/00008_8_007004_0000001.jpg'

现在 _0000001 被添加到原始文件名的末尾。

抱歉,我漏掉了一分。当您使用 files=glob.glob(data_path) 时,f1 具有完整路径。

因此,f1 必须从路径中拆分出来。

现在你可以试试这个了:

img_dir="/path to original folder/images"
data_path=os.path.join(img_dir,'*g')
files=glob.glob(data_path)
data=[]
    
i = 0
for f1 in files:
     img=cv2.imread(f1)
     data.append(img)
    
    #####################################################################
        #############Image processing part
    ###################################################################
    
         path = '/path to new folder/'
         cv2.imwrite("{}{}_{:07d}.jpg".format(path,f1.split("/")[-1].strip(".jpg"), i), result)        
         i+=1