Ошибка типа: неподдерживаемые типы операндов для +: 'PosixPath' и 'str'
Я получил ошибку
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 ответа
Решение
Если вы просматриваете ошибку типа, это на самом деле потому, что вы пытаетесь использовать +
оператор на PosixPath
тип и str
, Вам нужно будет преобразовать PosixPath
в строку, прежде чем вы можете использовать imwrite
,
Может быть, попробуйте:
cv2.imwrite(str(path) + "/" + "photo.png", img)
В качестве альтернативы используйте правильную конкатенацию, как описано в документации к pathlib.
Вы не можете использовать операн +
в PosixPath
, но используя /
# before
cv2.imwrite(path + "/" + "photo.png", img)
# after
cv2.imwrite(path / "photo.png", img)
Сначала преобразуйте объект PosixPath (path
) нанизывать:
str(path) + "/" + "photo.png"
Это работает для меня:
cv2.imwrite(str(path) + "/" + "photo.png", img)