实现功能:
图片旋转:按指定的角度对图片进行逆时针旋转
图片平移:按指定的像素大小对图片进行水平和垂直方向的平移
图片缩放:按指定的缩放倍数对图片进行水平方向和垂直方向的缩放

注:      图像的  shape 属性:高、宽、通道数
Image.open()方式读取图像:无法输出图像的shape属性(高、宽、通道数)
cv2.imread()方式读取图像:可以输出图像的shape属性

技巧:
新的文件名中,加入一些提示信息,
例如:处理过后的文件中带有 _ ,使得被处理后的文件不被再次处理

局限性:只能将文件保存到原有目录下


代码:
import os
import glob
from scipy import ndimage
import  cv2
import numpy as np

'''获取文件夹下所有指定后缀的文件'''
def get_image_paths(folder):
    #return glob.glob(os.path.join(folder, '*.png'))    #以png为结尾的文件
    return glob.glob(os.path.join(folder, '*.jpg'))     #以jpg为结尾的文件

'''图片旋转:旋转指定角度'''
def image_rotate(filename,angle):
    #读取文件
    #im = Image.open(filename)
    im = cv2.imread(filename)
    im = cv2.cvtColor(im,cv2.COLOR_BGR2RGB)     #由于opencv默认读取为BGR,需要将其转化为RGB图像
    #旋转指定的角度
    new_image = ndimage.rotate(im,int(angle))
    new_filename = filename[:-4] +'_rotate_' + str(angle) + '.jpg'  #在原图片名称的基础上命名新的文件名称
    cv2.imwrite(new_filename, new_image)        #保存处理后的文件

'''图片平移,平移指定的距离'''
#思路:新建一个矩阵,将平移后对应位置的像素保存到新的矩阵中,最终返回新建的矩阵'''
def translation(filename,translate_x,translate_y):
    # 读取文件
    img = cv2.imread(filename)
    img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)   #在该代码中由于opencv读取默认为BGR将其转化为RGB图像

    img_h,img_w = img.shape[:2] #图像的shape属性包括:高、宽、通道数
    # 新建矩阵dst,用于暂存平移后的图像像素值,初始时矩阵中所有默认值为0
    dst = np.zeros(img.shape,dtype=np.uint8)
    for row in range(img_h):
        for col in range(img_w):
            h = int(row-translate_y)
            w = int(col-translate_x)
            #平移后,在可现实区域部分的像素才可见,黑色进行填充剩余区域(像素默认值为0实现)
            if h<img_h and h>=0 and w<img_w and w>=0:
                dst[row][col] = img[h][w]
    new_filename