python根据.json文件bbox裁剪图片制作数据集及标签

**##以测试数据集为例,.json文件中包含了图片路径名,bbox及其标签值。可以生成相应的截取图片及所对应的标签...**
# -*- coding: utf-8 -*-
"""
Created on Wed Mar 29 09:20:40 2017

@author: yiyi
"""
import json
from PIL import Image
import os
import os.path
from skimage import io,data
import numpy as np

def crop(images):
    for i in range(0,len(images)):
        fn=images[i]['file_name']
        for j in range(0,len(images[i]['targets'])):
            newfn=fn.replace('.jpg',str(j)+'.jpg')
            cropmake(fn,newfn,images[i]['targets'][j]['bbox'],images[i]['targets'][j]['attribute'])
def lv(x,y):
    return str(x)+' '+str(y)

def cropmake(fn,newfn,bbox,attribute):
    loc='D:/Epan/mul/Image/'
    im=Image.open(loc+fn)  
    #bbox[2]=bbox[0]+bbox[2]
    #bbox[3]=bbox[1]+bbox[3]
    left = bbox[0]
    top = bbox[1]
    width = bbox[2]
    height = bbox[3]
    bbox = (left, top, left+width,top+height)
    bbox=tuple(bbox)
    try:
        newim=im.crop(bbox)
        #newim=im[left:left+width,top:top+height]   
        newloc=loc+'newImage/'
        crop_fn=newloc+newfn
        newim.save(crop_fn)
        label_value=reduce(lv,attribute)
    except SystemError:
        print "Error: 没有找到图片或图片剪裁失败"

    else:

        if 'test/' in newfn:            
            f=open(newloc+'test.txt','a+')
            item='%s %s\n' % (newfn,label_value)
            f.write(item)
            f.close()
        '''else:
            f=open(newloc+'val.txt','a')
            f.write('%s %s\n' % (newfn,label_value))
            f.close()
            '''
path='D:/Epan/mul/test/extract/'
for num in range(0,30):
    fullpath=path+'extract'+str(num)+'.json'
    fp=open(fullpath,'r')
    images=json.load(fp)
    fp.close()
    crop(images)
  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值