V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
villgust
V2EX  ›  问与答

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

  •  1
     
  •   villgust · 2018-05-18 14:33:14 +08:00 · 1248 次点击
    这是一个创建于 2162 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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])

    希望大家能帮帮忙,万分感谢。
    第 1 条附言  ·  2018-05-18 15:17:53 +08:00
    刚才忘记补充了,目前准备用的就是 pillow,现在处理单个的有思路,但不会依据两个 txt 文件进行批量操作。
    下面就是单个的操作代码:
    from PIL import Image
    img = Image.open("000.jpg")
    img2 = img.crop((212,964,283,226 ))
    img2.save("000.jpg")
    7 条回复    2018-05-18 18:36:10 +08:00
    fffflyfish
        1
    fffflyfish  
       2018-05-18 14:55:10 +08:00   ❤️ 1
    Pillow 的 Image crop 方法或者 Skimage 里直接图像转成 numpy 然后截取行列 crop
    villgust
        2
    villgust  
    OP
       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
        3
    Eleflea  
       2018-05-18 15:30:31 +08:00 via Android   ❤️ 1
    f.readlines()然后 zip
    fffflyfish
        4
    fffflyfish  
       2018-05-18 15:31:12 +08:00 via iPhone   ❤️ 1
    把两个列表 zip 起来,一个 for 循环就好了
    villgust
        5
    villgust  
    OP
       2018-05-18 16:14:15 +08:00
    @fffflyfish 请问合在一起后,怎么用 Image crop 方法实现读取指定行的文件名和坐标呢?
    fffflyfish
        6
    fffflyfish  
       2018-05-18 17:41:52 +08:00   ❤️ 1
    ```
    for img_file , pos in zip(filename0 ,piccoordinate0 )
    img = Image.open(img_file)
    img_crop = img.crop(tuple(pos.split(",")))
    ```
    villgust
        7
    villgust  
    OP
       2018-05-18 18:36:10 +08:00
    @fffflyfish 感谢前辈的指点。
    现在还遇到了问题,就是执行程序后,出现 NameError: name 'Image' is not defined。
    能不能再展示下前面是怎么定义的?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5630 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 58ms · UTC 06:23 · PVG 14:23 · LAX 23:23 · JFK 02:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.