python图片旋转脚本_封装了深度学习中几个图片数据增强的脚本-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中运行即可,注意指定路径

可以进入目录,看到平移后的图片

删除

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

代码

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)

演示

数据又回到了之前的样子

旋转

代码

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

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执行后,可以去目录看到结果

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值