【问题标题】:Opening new image with PIL (python) syntax issue使用 PIL(python)语法问题打开新图像
【发布时间】:2019-07-15 00:33:43
【问题描述】:

我正在使用 PIL 将数千张图像从 .png 转换为 .jpg,以便我可以使用 openCV 加载图像并对其进行操作。

问题是我有一个文件,其中包含图像的位置,例如:

project/data/image/000000000.png
project/data/image/000000001.png

问题是,当我在变量中读取这些行时:

file = open("project/data/loc.txt", "r")
var = [ line[:-1] for line in file ]

我的变量 var,包含与 loc.txt 相同的行:

project/data/image/000000000.png
project/data/image/000000001.png

但是,接下来是 PIL。根据我能够找到并工作的内容,加载图像我需要将参数指定为:

Image.open(r"location")

因为我有包含一系列字符串的 var,所以使用:

image = []
for v in var:
    image.append( Image.open(???????????????) )

我不知道该怎么办。

我不能连接 "r" + v,因为它想 'r"location"'(字符串中的字符串)。

我该怎么办?你有什么建议吗?我无法避免读取包含位置的文件,因为我不可能手动将每个位置键入数千次以上。

【问题讨论】:

  • 试试im = Image.open(var[0]) 或者,如果在你的循环中Image.open(v)
  • 我试过这样做,它不起作用。它会抛出错误:fp = builtins.open(filename, "rb"),但是当我尝试说 open("location", "r") 时,它也会崩溃并出现同样的错误。当我像有问题的那样输入它时:open(r"location"),它通过了。
  • 尝试在循环中打印v
  • 同样的结果。 :(
  • 怎样才能得到同样的结果?它肯定会打印文件名吗?它是否正确打印它们?你的文件名中真的有非 ASCII 字符吗?

标签: python-3.x python-imaging-library


【解决方案1】:

如果您想传递位置,作为原始字符串,您可以尝试使用 fr"" 来达到此目的。

location = "project/data/image/000000000.png"

img = Image.open(fr"{location}")

我们使用f string,带有r(原始)。这允许我们在运行时对字符串值使用原始 ('r')。

注意:- 这仅适用于 3.5 以上的 Python 版本(或 Python 版本 >= 3.6)。

【讨论】:

    猜你喜欢
    • 2019-12-17
    • 2019-05-12
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 2021-12-05
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    相关资源
    最近更新 更多