gpt4 book ai didi

python - 如何制作目录并将图像放入目录中?

转载 作者:太空宇宙 更新时间:2023-11-04 02:33:23 25 4
gpt4 key购买 nike

如何创建目录并将图像放入目录?我在data.py中写了如下代码:

import os
import cv2
import argparse
import numpy as np
import math

parser = argparse.ArgumentParser(description='')
parser.add_argument('input_dir' ,help='input directory')
parser.add_argument('output_dir' ,help='out directory')

args = parser.parse_args()

def find_all_files(directory):
for root, dirs, files in os.walk(directory):

for file in files:
p=os.path.join(root, file)
p=p.split("/")[len(p.split("/"))-2]
name, ext = os.path.splitext(p)

yield os.path.join(root, file)

dirname=args.output_dir
if not os.path.exists(dirname):
os.mkdir(dirname)


folder_img = find_all_files(args.input_dir)
im =cv2.imread(folder_img)
cv2.imwrite(args.output_dir ,im)

现在,当我运行命令 python data.py ./photo ./copy_photo 时,在函数 imwrite 中查找指定扩展名的编写器时发生错误。我想创建一个目录 copy_photo 并将这段代码制作的图片放在目录中。 copy_photo 文件夹已经制作好了,那么我的代码有什么问题呢?我应该如何解决这个问题? copy_photo文件夹的图片放置方式是我写错了吗?

最佳答案

find_all_files 是一个生成器。变量 folder_img 将绑定(bind)到该生成器。对该生成器调用 cv2.imread() 不会起作用,因为 imread() 需要图像文件,而不是生成器。

您需要遍历生成器以逐一复制每个文件。像这样:

folder_img = find_all_files(args.input_dir)
for filename in find_all_files(args.input_dir):
im = cv2.imread(filename)
cv2.imwrite(os.path.join(args.output_dir, os.path.basename(filename)), im)

另请注意,args.output_dir 是表示目标目录名称的字符串。您需要指定文件的路径,包括目录。使用 os.path.join()os.path.basename() 来做到这一点。

如果您只想将文件从一个目录复制到另一个目录,那么您也许应该使用shutil.copytree。因为打开图像文件然后将它们写回是没有意义的。此外,您的 find_all_files() 生成器函数将传回所有文件,包括目录,因此您需要添加一些逻辑来检测图像文件并过滤掉不需要的文件。

关于python - 如何制作目录并将图像放入目录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48537503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com