1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import argparse
- import os
- import cv2
- import numpy as np
- from PIL import Image
- import glob
- def save_img(img_Path, save_Path, cnt):
- img_path = img_Path
- img = cv2.imread(img_path)
- gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
- ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)
- coords = np.column_stack(np.where(thresh > 0))
- angle = cv2.minAreaRect(coords)[-1]
- print('{}:{}'.format(img_path, angle))
- # #调整角度
- if angle < -45:
- angle = -(90 + angle)
- else:
- angle = -angle
- im = Image.open(img_path)
- im_rotate = im.rotate(angle, expand=0, fillcolor='#FFFFFF')
- if cnt == 0:
- save_path = save_Path + '/' + img_path.split('\\')[-1]
- else:
- save_path = save_Path + '/' + img_path.split('/')[-1]
- im_rotate.save(save_path)
- def correct(img_fold, img_Path, save_fold):
- if not os.path.exists(save_fold):
- os.makedirs(save_fold)
- if img_Path == '':
- path_list = glob.glob(img_fold + '/*.png')
- size = len(path_list)
- print('total: {} images'.format(size))
- for path in path_list:
- save_img(path, save_fold, 0)
- else:
- save_img(img_Path, save_fold, 1)
- if __name__ == '__main__':
- parser = argparse.ArgumentParser()
- parser.add_argument('--img_dir', type=str, default='')
- parser.add_argument('--img_path', type=str, default='')
- parser.add_argument('--save_dir', type=str, default='')
- args = parser.parse_args()
- correct(args.img_dir, args.img_path, args.save_dir)
|