TypeError:内置操作的错误参数类型

问题描述 投票:6回答:2

我收到错误TypeError:内置操作的错误参数类型。我写

import os
import cv2
from pathlib import Path
path = Path(__file__).parent
path /= "../../img_folder"
for f in path.iterdir():
    print(f)
    img=cv2.imread(f)

在img = cv2.imread(f)中,发生错误。这是一个Python错误或目录错误吗?在print(f)中,我认为可以获得正确的目录。我该如何解决这个问题?

python opencv
2个回答
8
投票

看起来像path.iterdir()返回<class 'pathlib.PosixPath'>类型的对象而不是str。并且cv2.imread()接受字符串文件名。

所以这解决了它:

import os
import cv2
from pathlib import Path
path = Path(__file__).parent
path /= "../../img_folder"
for f in path.iterdir():
    print(f)    # <--- type: <class 'pathlib.PosixPath'>
    f = str(f)  # <--- convert to string
    img=cv2.imread(f)

1
投票

path不是STRING类型的对象,是一个对象pathLib Type,所以你必须要做的是,在循环中,使用str()方法将一个iterator的值转换为String对象,然后传递给imread。

喜欢:

<!-- language: py-->
for pathObj in path.iterdir():   
    pathStr = str(pathObj) 
    img=cv2.imread(pathStr)
© www.soinside.com 2019 - 2024. All rights reserved.