利用Python+OpenCV与GDAL批量裁剪图像

图片批处理介绍:

       由于在进行实验时,我们的图片没有resize到固定大小,或者想要将一个特别大的图片切分成若干个相同大小的自图片,常规做法是进来一张图,在算法预处理的环节就resize或者crop掉。这里,利用python+OpenCV进行了输入一个图片目录,然后对该目录下制定格式的图片按照指定大小进行裁剪输出;有的时候,我们接触到tif或者geotif图像,自己就带有地理坐标,如果只用OpenCV的话,可能会将地理坐标抹掉,造成信息的丢失,这里也借鉴了大神的部分工作《python中用GDAL实现矢量对栅格的切割》,利用GDAL的python版本可以实现和OpenCV一样的批量裁剪功能,但是保存的结果是带有地理坐标的tif影像。


OpenCV版本:

代码如下:

# -*- coding: utf-8 -*-
"""
Created on Thu Aug 24 13:30:31 2017

@author: AmosHawk WHU LIESMARS
"""

from __future__ import print_function
from __future__ import absolute_import
from __future__ import division
import sys
import os
#import threading
import cv2
#from PIL import Image
print (("shell name:"), sys.argv[0])
print ('params list:', str(sys.argv))

if (len(sys.argv)!=5):
    print('the input params should be equal to 4, namely the content, the picture format(eg jpg),the susbsize image height, the subsize image width')
    sys.exit(1)

for i in range(1, len(sys.argv)):
    print ("param", i, sys.argv[i])

rootContent = sys.argv[1];
suffixFile = sys.argv[2];
heightsubImage = int(sys.argv[3]);
widthsubImage = int(sys.argv[4]);

def resize(dirFile,suffix):
    #for rootpath, topdown, files in os.walk(dirFile):
        for file in os.listdir(dirFile):
            #singlefileName = os.path.join(rootpath,file)
            singlefileName = dirFile+"\\"+file
            singlefileForm = os.path.splitext(singlefileName)[1][1:]
            if(singlefileForm == suffix):
                print('loading................ : ',singlefileName)
#               oriImage = Image.open(singlefileName)
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值