封装了深度学习中几个图片数据增强的脚本-python平移、旋转与调整大小

文章目录

  • 平移
    • 代码
    • 演示
  • 删除
    • 代码
    • 演示
  • 旋转
    • 代码
    • 演示

平移

代码

可以调整以下的代码,只进行某一方向的平移;也可修改divisor调整平移的比例因子。

import cv2
import numpy as np
from PIL import Image
from matplotlib import pyplot as plt
import os, sys
def transSave(picPath, divisor=0.05):
	img = cv2.imread(picPath)
	rows, cols = img.shape[:2]
	# 计算偏移量
	deltaX = rows * divisor
	deltaY = cols * divisor
	
	M1 = np.float32([[1, 0, deltaX], [0, 1, 0]])
	M2 = np.float32([[1, 0, -deltaX], [0, 1, 0]])
	M3 = np.float32([[1, 0, 0], [0, 1, deltaY]])
	M4 = np.float32([[1, 0, 0], [0, 1, -deltaY]])
	# 用仿射变换实现平移
	img_s1 = cv2.warpAffine(img, M1, (cols, rows))
	img_s2 = cv2.warpAffine(img, M2, (cols, rows))
	img_s3 = cv2.warpAffine(img, M3, (cols, rows))
	img_s4 = cv2.warpAffine(img, M4, (cols, rows))
	# 保存图片
	cv2.imwrite(picPath.replace('.jpg', '_1.jpg'), img_s1)
	cv2.imwrite(picPath.replace('.jpg', '_2.jpg'), img_s2)
	cv2.imwrite(picPath.replace('.jpg', '_3.jpg'), img_s3)
	cv2.imwrite(picPath.replace('.jpg', '_4.jpg'), img_s4)

if __name__ == '__main__':
	rootdir = sys.argv[1]  # 指明被遍历的文件夹
	for parent, dirnames, filenames in os.walk(rootdir):
		for filename in filenames:
			currentPath = os.path.join(parent, filename)
			transSave(currentPath)

演示

直接在cmd中运行即可,注意指定路径
封装了深度学习中几个图片数据增强的脚本-python平移、旋转与调整大小_第1张图片
可以进入目录,看到平移后的图片
封装了深度学习中几个图片数据增强的脚本-python平移、旋转与调整大小_第2张图片

删除

这个方法用于撤销之前的平移操作,也可以用于撤销下面的旋转操作

代码

import os
import os.path
import sys
rootdir = sys.argv[1]  # 指明被遍历的文件夹
for parent, dirnames, filenames in os.walk(rootdir):
    for filename in filenames:
        currentPath = os.path.join(parent, filename)
        # 注意判断条件,如果原文件名字有_则不适用,需要自己修改
        if len(filename.split('_'))>1:
            print('filename is :' + filename)
            os.remove(currentPath)

演示

数据又回到了之前的样子
封装了深度学习中几个图片数据增强的脚本-python平移、旋转与调整大小_第3张图片

旋转

代码

注释当中有调整大小以及各种旋转的代码

from PIL import Image
import os
import os.path
import sys
rootdir = sys.argv[1]  # 指明被遍历的文件夹
for parent, dirnames, filenames in os.walk(rootdir):
    for filename in filenames:
        currentPath = os.path.join(parent, filename)
        im = Image.open(currentPath)
        #out = im.rotate(45) #45°旋转
        #out = im.resize((224, 224)) 
        out = im.transpose(Image.FLIP_LEFT_RIGHT)
        #out = im.transpose(Image.FLIP_TOP_BOTTOM) #垂直翻转
        #out = im.transpose(Image.ROTATE_90) # 90
        #out = im.transpose(Image.ROTATE_180) #180°顺时针翻转
        #out = im.transpose(Image.ROTATE_270) #270°顺时针翻转
        newname=currentPath.replace('.jpg', '_transpose.jpg')
        out.save(newname)

演示

在cmd执行后,可以去目录看到结果
封装了深度学习中几个图片数据增强的脚本-python平移、旋转与调整大小_第4张图片

你可能感兴趣的:(封装了深度学习中几个图片数据增强的脚本-python平移、旋转与调整大小)