Skip to main content
 首页 » 编程设计

python之类型错误 : bad argument type for built-in operation What is wrong in my code

2025年01月19日30zhwl

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