我收到错误,TypeError:内置操作的错误参数类型。 我在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
(我想从照片文件夹中读取图像并将输出图像放在copy_photo文件夹中)时,会发生错误。我该如何解决这个问题?我的代码出了什么问题?我写了print(folder_img )在folder_img变量&下find_all_files方法但不显示print语句。
Traceback说
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
答案 0 :(得分:1)
您为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)