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

时间:2017-12-27 10:57:45

标签: python opencv

我收到错误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)中,我认为可以获得正确的目录。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:9)

看起来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 :(得分:1)

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

喜欢:

<!-- language: py-->
for pathObj in path.iterdir():   
    pathStr = str(pathObj) 
    img=cv2.imread(pathStr)