TypeError:+不支持的操作数类型:' PosixPath'和' str'

时间:2017-12-28 03:11:22

标签: python opencv

我收到了错误

TypeError: unsupported operand type(s) for +: 'PosixPath' and 'str'

我的代码如下

import os
import cv2
import random
from pathlib import Path

path = Path(__file__).parent
path = "../img_folder"

for f in path.iterdir():

    print(f)
    f = str(f)
    img=cv2.imread(f)
    line = random.randint(0, 50)
    img[3, 3, :] = line
    cv2.imwrite(path + "/" + "photo.png", img)

Traceback说cv2.imwrite~的代码是错误的。我真的不明白为什么这是错的。这种类型的路径错误吗?或者我错了使用这种方法?我该如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

如果您查看类型错误,实际上是因为您尝试在+类型和PosixPath上使用str运算符。在使用PosixPath之前,您需要将imwrite转换为字符串。

也许试试:

cv2.imwrite(str(path) + "/" + "photo.png", img)

或者,使用pathlib docs中描述的正确连接。

答案 1 :(得分:0)

You cannot using operan + in PosixPath, but using /

    # before
    cv2.imwrite(path + "/" + "photo.png", img)
    # after
    cv2.imwrite(path / "photo.png", img)

答案 2 :(得分:0)

首先将PosixPath对象(path)转换为字符串:

str(path) + "/" + "photo.png"

答案 3 :(得分:0)

这对我有用:

cv2.imwrite(str(path) + "/" + "photo.png", img)