python根据四点坐标截取图片

话不多说,上代码。

# 每个txt文件代表一张图片,txt文档中每行就是此图片中要截取的坐标。根据坐标截取小图片存放于images文件夹中
import os

# 需要遍历的文件夹名
txt_dir = 'result'  # 坐标文件夹名,
pic_dir = 'pic'  # 图片存放文件夹名
# root为文件夹的名字,dirs  , files为由文件夹内的每个文件的名称组成数组
for pic_root, pic_dirs, pic_files in os.walk(pic_dir):  # 将图片文件夹下的图片弄成数组存储到pics中
    pics = pic_files

for txt_root, txt_dirs, txt_files in os.walk(txt_dir):  # 将坐标文件夹下的各个文本文件弄成数组存储到txts中
    txts = txt_files

# 计数器 a表示第几个文本文件
a = 0

for file in txts:
    b = 0  # b表示每个文本文件中的第几行
    f = open('result/' + file, 'r')  # 读取txt文件里的内容
    txt = f.readlines()  # 将内容转化为数组的形式,一行为一个元素
    # print(txt)
    for i in txt:
        t = i.split(",")  # 将一行中的坐标信息按','分割成一个新的数组
        # 把相应的坐标转化为以左上角为原点的四个边框的位置,并把字符串转化为整数型
        left = int(t[0])  # left = x1 = x4 = t[0] = t[6]
        upper = int(t[1])  # upper = y1 = y2 = t[1] = t[3]
        right = int(t[2])  # right = x2 = x3 = t[2] = t[4]
        lower = int(t[5])  # lower = y3 = y4 = t[5] = t[7]
        from PIL import Image

        img = Image.open("pic/" + pics[a])  # 图片打开地址
        # print(img.size)  # 输出图片的大小
        cropped = img.crop((left, upper, right, lower))  # (left, upper, right, lower)
        cropped.save("images/" + str(a + 1) + "_" + str(b + 1) + ".png")  # 保存地址 保存名字
        b = b + 1
    f.close()  # 关闭文件
    a = a + 1

 

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值