首页 > 解决方案 > 使用 PIL(python)语法问题打开新图像

问题描述

我正在使用 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”(字符串中的字符串)。

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

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

解决方案


如果您想传递该位置,您可以尝试将其作为原始字符串fr""用于该目的。

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

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

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

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


推荐阅读