cut_save.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. import argparse
  2. import os
  3. import cv2
  4. from tqdm import tqdm
  5. def image_cut_save(path, left, upper, right, lower, save_path, pix):
  6. """
  7. 所截区域图片保存
  8. :param pix: 将图片height缩放的pix
  9. :param path: 图片路径
  10. :param left: 区块左上角位置的像素点离图片左边界的距离
  11. :param upper:区块左上角位置的像素点离图片上边界的距离
  12. :param right:区块右下角位置的像素点离图片左边界的距离
  13. :param lower:区块右下角位置的像素点离图片上边界的距离
  14. 故需满足:lower > upper、right > left
  15. :param save_path: 所截图片保存位置
  16. """
  17. img = cv2.imread(path) # 打开图像
  18. cropped = img[upper:lower, left:right]
  19. if pix != 0:
  20. height, width = cropped.shape[:2] # 原始分辨率
  21. if height != 0 and width != 0:
  22. while height < pix or width < pix:
  23. if height <= width:
  24. # 等比例缩放到pix
  25. scale = pix / height
  26. # 缩放后分辨率
  27. height = pix
  28. width = int(width * scale)
  29. else:
  30. # 等比例缩放到pix
  31. scale = pix / width
  32. # 缩放后分辨率
  33. width = pix
  34. height = int(height * scale)
  35. img = cv2.resize(cropped, (width, height))
  36. # 保存截取的图片
  37. cv2.imwrite(save_path, img)
  38. else:
  39. cv2.imwrite(save_path, cropped)
  40. if __name__ == '__main__':
  41. parser = argparse.ArgumentParser()
  42. parser.add_argument('--img_dir', type=str, default='./www', help='图片路径,填文件夹的路径')
  43. parser.add_argument('--save_dir', type=str, default='./', help='截取图片保存的文件夹路径')
  44. args = parser.parse_args()
  45. for path in tqdm(os.listdir(args.img_dir)):
  46. image_cut_save(args.img_dir + '/' + path, 465, 365, 640, 400, args.save_dir + '/bg_id_' + path, 0)