我想使用图像的原始名称保存输出图像。
我尝试使用此代码,但是大多数情况下效果很好,一半保存了其他文件名。如何做得更好?
cropped_images = "GrabCut"
if not os.path.exists(cropped_images):
os.makedirs(cropped_images)
# Load data
filepath = "Data"
images = [cv2.imread(file) for file in glob.glob(filepath + "/*.jpg")]
file_names = []
for filename in os.listdir(filepath):
org_image_name = os.path.splitext(filename)[0]
file_names.append(org_image_name)
for i, image in enumerate(images):
DO SOMETHING...
img_name = file_names[i]
cropped_images_path = os.path.join(cropped_images, img_name + '.jpg')
cv2.imwrite(cropped_images_path, image)
答案 0 :(得分:0)
出现错误的原因是glob
和os.listdir
所创建的列表不同,文件也不一样(glob仅获取jpg
文件和{{1} }获取所有内容)或不同的顺序,或两者兼而有之。您可以更改列表listdir
中的文件名,以建立新文件名orig_files
的相应列表。
看起来一次只读取一张图像(一次只能使用一张)更有意义,因此我将其移入了循环。您还可以使用new_files
获取文件名,并使用os.path.basename
一起遍历多个列表。
zip