我收到一个错误,TypeError: bad argument type for built-in operation 。 我在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(我想从 photo 文件夹中读取图像并将输出图像放在 copy_photo 文件夹中)时,错误发生了。我应该如何解决这个问题?我的代码有什么问题?我在 folder_img 变量和 find_all_files 方法下写了 print(folder_img) 但打印语句没有显示。
回溯说
Traceback (most recent call last):
File "data.py", line 175, in <module>
im =cv2.imread(folder_img)
TypeError: bad argument type for built-in operation
请您参考如下方法:
你给 cv2.imread(folder_img) 一个文件列表,它接受一个文件。
参见 cv2.imread
如果您不对中间的图像做任何事情,只需 copy
否则使用
for f in folder_img:
im =cv2.imread(f)
# do your stuff
cv2.imwrite(args.output_dir ,im)
