TypeError:内置操作的错误参数类型我的代码有什么问题?

时间:2018-01-31 06:43:16

标签: python

我收到错误,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

1 个答案:

答案 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)