我有一个错误
TypeError: unsupported operand type(s) for +: 'PosixPath' and 'str'
Run Code Online (Sandbox Code Playgroud)
我的代码如下
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)
Run Code Online (Sandbox Code Playgroud)
回溯说代码cv2.imwrite~是错误的。我真的无法理解为什么这是错误的。是这种类型的路径错误吗?还是我使用这种方法是错误的?我应该如何解决这个问题?
fai*_*din 15
不能+在PosixPath对象上使用操作数。相反,您应该/在处理pathlib库时使用:
# before
cv2.imwrite(path + "/" + "photo.png", img)
# after
cv2.imwrite(path / "photo.png", img)
Run Code Online (Sandbox Code Playgroud)
SCB*_*SCB 13
如果您仔细查看您的类型错误,实际上是因为您试图+在PosixPath类型和str. 您需要PosixPath先将转换为字符串,然后才能使用imwrite.
也许尝试:
cv2.imwrite(str(path) + "/" + "photo.png", img)
Run Code Online (Sandbox Code Playgroud)
或者,使用pathlib docs 中描述的正确连接。
首先将 PosixPath 对象 ( path) 转换为字符串:
str(path) + "/" + "photo.png"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21751 次 |
| 最近记录: |