【问题标题】:TypeError: bad argument type for built-in operationTypeError:内置操作的参数类型错误
【发布时间】:2018-06-08 00:37:43
【问题描述】:

我收到一个错误 TypeError: bad argument type for built-in operation 。 我写了

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

【问题讨论】:

  • Path 类来自哪个库?
  • @Nitred from pathlib import Path is.
  • 分享你的 pathlib 文件内容
  • @pankajmishra 就像 ../../img_folder/photo1.png 。文件夹有图片。

标签: python opencv


【解决方案1】:

path 不是 STRING 类型的对象,是 pathLib 类型的对象,所以你要做的就是,在循环中,在传递给 imread 之前,用 str() 方法将迭代器的值转换为 String 对象.

喜欢:

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

【讨论】:

  • 这与旧答案的内容相同,并且没有添加任何新内容。
【解决方案2】:

看起来path.iterdir() 返回一个&lt;class 'pathlib.PosixPath'&gt; 类型的对象,而不是strcv2.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)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-03
  • 1970-01-01
  • 2013-08-11
  • 2013-03-28
  • 2019-02-17
  • 1970-01-01
  • 2023-03-31
相关资源
最近更新 更多