将图像写入与输入文件同名的文件夹中
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()
中 path
、f1
和 i
的每个值。第一个用于 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
我有一个图像目录,我正在尝试对它们进行一些图像处理,并将结果图像写入另一个文件夹,并以其原始名称作为扩展名。
我的问题是:如何将图片的名字写成与原名相似的名字? 这是我写的代码:
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()
中 path
、f1
和 i
的每个值。第一个用于 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