# !/usr/bin python3
# encoding : utf-8 -*-
# @software : PyCharm
# @file : Augment.py
import cv2
import os
import numpy as np
import random
from tqdm import tqdm
list = os.listdir('Order')
for i in range(len(list)):
list[i] = "Order/" + list[i]
def rotate_bound(image, angle):
# grab the dimensions of the image and then determine the
# center
(h, w) = image.shape[:2]
(cX, cY) = (w // 2, h // 2)
# grab the rotation matrix (applying the negative of the
# angle to rotate clockwise), then grab the sine and cosine
# (i.e., the rotation components of the matrix)
M = cv2.getRotationMatrix2D((cX, cY), -angle, 1.0)
cos = np.abs(M[0, 0])
sin = np.abs(M[0, 1])
# compute the new bounding dimensions of the image
nW = int((h * sin) + (w * cos))
nH = int((h * cos) + (w * sin))
# adjust the rotation matrix to take into account translation
M[0, 2] += (nW / 2) - cX
M[1, 2] += (nH / 2) - cY
# perform the actual rotation and return the image
return cv2.warpAffine(image, M, (nW, nH))
def add_noise(img, num):
imgInfo = img.shape
height = imgInfo[0] - 1 # 防止越界
width = imgInfo[1] - 1
temp = num # 噪声点的个数
for i in range(0, temp):
if random.randint(1, temp) % 2 == 0:
img[random.randint(0, height), random.randint(0, width)] = (255, 255, 255)
if random.randint(1, temp) % 2 != 0:
img[random.randint(0, height), random.randint(0, width)] = (0, 0, 0)
return img
for i in tqdm(range(len(list))):
if i % 2 == 0:
img = cv2.imread(list[i])
img_dst = rotate_bound(img, random.randint(1, 9)*20)
cv2.imwrite('Order/{}_rotate.jpg'.format(i), img_dst)