zoukankan      html  css  js  c++  java
  • python文件处理-将图像根据坐标切割成若干小图

    代码涉及到:遍历目标路径,选取csv后缀的文件,遍历csv每一行,读取坐标,用cv操作图片

    # !/usr/bin/python
    # -*- coding: UTF-8 -*-
    import pandas as pd
    import os
    import time
    import scipy.misc
    from shutil import copyfile
    from PIL import Image
    import shutil
    
    g_img = None
    
    def saveToMysql(row):
        sides = [50,100,200,300,400,500,600]
        img = g_img
        limit_x = img.shape[1]
        limit_y = img.shape[0]
        for side in sides:
            x1 = row.X - side
            x2 = row.X + side
            y1 = row.Y - side
            y2 = row.Y + side
            x1 = min(limit_x, max(0, x1))
            x2 = max(x1+1, min(limit_x, x2))
            y1 = min(limit_y, max(0, y1))
            y2 = max(0, min(limit_y, y2))
            t1 = int(time.time()*1000)
            cropped = img[y1:y2,x1:x2,:]
            t2 = int(time.time()*1000)
            #new_crop_parh = row.img + '_' + str(row.Type) + '_' + str(row.X) + '_' + str(row.Y) + '.png'
            new_crop_parh = 'img_crop/' + str(row.Type) + '/' + row.crop + '_' + str(row.X) + '_' + str(row.Y) + '_' + str(side) + '.png'
            scipy.misc.imsave(new_crop_parh , cropped)
            t3 = int(time.time()*1000)
     #       print("剩余时间:",(t3-t2)*18441/1000/3600)
    
    
    if __name__ == '__main__':
        for i in range(1,17):
            path = './img_crop/' + str(i)
            #if os.path.exists(path):
            #    shutil.rmtree(path+'/')
            #os.mkdir(path)
    
        for line in open("xae"):
            csvpath = line.strip('
    ')
            if not csvpath or not os.path.exists(csvpath):
                print('not found: ' + csvpath)
    
            arr = csvpath.split('/')
            image = arr[4].replace(".csv", ".JPG")
            medicalId=arr[3]
            batchId=arr[1]
    
            img_path = 'img/' + batchId + '/' + medicalId + '/Images/' + image
            #print(img_path)
            img_path_crop_path = batchId + '_' + medicalId + '_' + image
    
          #  print(csvpath)
            df = pd.read_csv(csvpath)
            #print(df)
            df['img'] = img_path
            df['crop'] = img_path_crop_path
            g_img = scipy.misc.imread(img_path)
            df.apply(saveToMysql, axis=1)
  • 相关阅读:
    Bookmarks_www2
    Linux系统各发行版镜像下载(持续更新)
    tiny-rtems-src
    rtems-os-source
    OpenRCT2-ext
    PAT甲级1004题解——并查集思想改
    PAT甲级1008水题飘过
    PAT甲级1007题解——贪心
    PAT甲级1006水题飘过
    PAT甲级1005水题飘过
  • 原文地址:https://www.cnblogs.com/niulang/p/11350525.html
Copyright © 2011-2022 走看看