Python实现tif图像的批量分割

#批量切割"D:\\tempory\\data"文件夹下的tiff,切割结果分别存储到新建的文件夹D:\tempory\datasave\result0或result1或result2文件夹下
#import os
import cv2
import numpy as np
import os
pic_path=[1]#定义列表来记录读取的tif文件的路径
# for i in range(1,101):
#     pic_path.append(i)
#print(pic_path[99])
pic_target=[1]#定义列表来表示存储切片的文件夹的路径
# for i in range(1,101):
#     pic_target.append(i)
#print(pic_target[99])
N = 0#用N来记录读取到的tif文件的个数
print("读取的D:\\tempory\\data路径下的tif文件的路径分别为:")
#1、下方是在读取给定路径下的tif文件,以获取其位置
dirname = "D:\\tempory\\data"
# 判断文件夹dirname是否存在
if not os.path.exists(dirname):
    print("路径\"", dirname, "\" 不存在!")
# 递归获得文件夹和子文件夹下所有文件名
for root, dirs, files in os.walk(dirname):
    for file in files:
        pic_path[N] = os.path.join(root, file)#把读取的tif文件的路径,依次传递给pic_path[i]列表,用pic_path[i]列表存储下来
        pic_path.append(1)
        print(pic_path[N])#输出读取的tif文件的路径
        N=N+1
print("共读取到的个tif文件个数N为:", str(N))
#print(N)
print()
print("记录创建存储切片的文件夹的路径!")
#2、下方为建立的存储切片的文件夹
for num in range(0, N):
   # s = 'D:\\tempory\\datasave\\datasaveresult\\' + str(num)
    s = 'D:\\tempory\\datasave./' +'result'+str(num+1)+'/'
    pic_target[num] = s  # 用pic_target[num]列表存储创建的文件夹的路径s
    pic_target.append(1)
    if os.path.exists(s):  # 判断要创建的文件夹是否已存在
        print("所要创建的文件夹已存在!路径为:")  # 若存在,输出:存在
    else:
        os.makedirs(s)  # 若不存在,那就创建该文件夹
        # 上述s即是所创建的文件夹的位置
        # print(s)
        print("创建的文件夹路径为:")
    print(pic_target[num])#输出创建的文件夹的路径
print("已存在/共创建的文件夹个数为:",str(num+1))
#3、要分割后的尺寸
cut_width = 900
cut_length = 900
for n in range(0,N):
    # 读取要分割的图片,以及其尺寸等数据
    picture = cv2.imread(pic_path[n])  # pic_path[]为读取的tif的位置
    # print(picture)picture是一个矩阵
    (width, length, depth) = picture.shape
    # 预处理生成0矩阵
    pic = np.zeros((cut_width, cut_length, depth))
    # 计算可以划分的横纵的个数
    num_width = int(width / cut_width)
    num_length = int(length / cut_length)
    k = 0
    # for循环迭代生成
    #for k in range(0, 3):
    for i in range(0, num_width):
        for j in range(0, num_length):
            pic = picture[i * cut_width: (i + 1) * cut_width, j * cut_length: (j + 1) * cut_length, :]
            result_path = pic_target[n] + '{}_{}.tif'.format(i + 1, j + 1)  # 切片结果路径
            cv2.imwrite(result_path, pic)  # 把切好的小切片放入特定的tif位置
           # print(pic_target[n])
print("OK!!!")

 

实现效果:

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值