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