import argparse
import os
import cv2
from tqdm import tqdm


def image_cut_save(path, left, upper, right, lower, save_path, pix):
    """
        所截区域图片保存
    :param pix: 将图片height缩放的pix
    :param path: 图片路径
    :param left: 区块左上角位置的像素点离图片左边界的距离
    :param upper：区块左上角位置的像素点离图片上边界的距离
    :param right：区块右下角位置的像素点离图片左边界的距离
    :param lower：区块右下角位置的像素点离图片上边界的距离
     故需满足：lower > upper、right > left
    :param save_path: 所截图片保存位置
    """
    img = cv2.imread(path)  # 打开图像
    cropped = img[upper:lower, left:right]
    if pix != 0:
        height, width = cropped.shape[:2]  # 原始分辨率
        if height != 0 and width != 0:
            while height < pix or width < pix:
                if height <= width:
                    # 等比例缩放到pix
                    scale = pix / height
                    # 缩放后分辨率
                    height = pix
                    width = int(width * scale)
                else:
                    # 等比例缩放到pix
                    scale = pix / width
                    # 缩放后分辨率
                    width = pix
                    height = int(height * scale)
            img = cv2.resize(cropped, (width, height))
            # 保存截取的图片
            cv2.imwrite(save_path, img)
    else:
        cv2.imwrite(save_path, cropped)


if __name__ == '__main__':
    parser = argparse.ArgumentParser()
    parser.add_argument('--img_dir', type=str, default='./www', help='图片路径，填文件夹的路径')
    parser.add_argument('--save_dir', type=str, default='./', help='截取图片保存的文件夹路径')
    args = parser.parse_args()
    for path in tqdm(os.listdir(args.img_dir)):
        image_cut_save(args.img_dir + '/' + path, 465, 365, 640, 400, args.save_dir + '/bg_id_' + path, 0)

