请教如何在 Python3 中实现依据参数读取图像并且分割图像的功能?

2018-05-18 14:33:14 +08:00
 villgust
Python 新手,目前做一个机器学习训练,是打算基于 Python3 实现的,也找了一些资料,现在卡在这里了。
文件都在工作目录下。
目前有两个 txt 文件,一个是保存着训练图片名称,简称 a.txt ,
例如:
000.jpg
001.jpg
002.jpg
......
另一个是保存着需分离图片坐标,简称 b.txt 。
例如:
212,964,283,226
364,394,238,294
473,728,593,294
......
两个 txt 文件是每行一一对应关系.,比如第一张图即 000.jpg ,需要分割图片的坐标为 212,964,283,226
现在思路是,先将两个 txt 文件转化为列表,但是接下来怎么做就太清楚了,请问大家有什么解决方法?


目前代码如下:

for i in range(0,2): #行数目前暂取前 3 行
with open('a.txt') as f:
filename0 = [line.rstrip('\n') for line in f]
print (filename0[i])
with open('b.txt') as f:
piccoordinate0 = [line.rstrip('\n') for line in f]
print (piccoordinate0[i])

希望大家能帮帮忙,万分感谢。
1255 次点击
所在节点    问与答
7 条回复
fffflyfish
2018-05-18 14:55:10 +08:00
Pillow 的 Image crop 方法或者 Skimage 里直接图像转成 numpy 然后截取行列 crop
villgust
2018-05-18 15:06:50 +08:00
@fffflyfish
刚才忘记补充了,目前准备用的就是 pillow,现在处理单个的有思路,但不会依据两个 txt 文件进行批量操作。
下面就是单个的操作代码:
from PIL import Image
img = Image.open("000.jpg")
img2 = img.crop((212,964,283,226 ))
img2.save("000.jpg")
Eleflea
2018-05-18 15:30:31 +08:00
f.readlines()然后 zip
fffflyfish
2018-05-18 15:31:12 +08:00
把两个列表 zip 起来,一个 for 循环就好了
villgust
2018-05-18 16:14:15 +08:00
@fffflyfish 请问合在一起后,怎么用 Image crop 方法实现读取指定行的文件名和坐标呢?
fffflyfish
2018-05-18 17:41:52 +08:00
```
for img_file , pos in zip(filename0 ,piccoordinate0 )
img = Image.open(img_file)
img_crop = img.crop(tuple(pos.split(",")))
```
villgust
2018-05-18 18:36:10 +08:00
@fffflyfish 感谢前辈的指点。
现在还遇到了问题,就是执行程序后,出现 NameError: name 'Image' is not defined。
能不能再展示下前面是怎么定义的?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/455903

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX