Ошибка типа: неподдерживаемые типы операндов для +: '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)
Другие вопросы по тегам