当从网络采集的图片规格尺寸与机器学习模型中的尺寸不同时需要把图片裁剪成既定的大小。下面以狗猫狗大战中的图片为例。猫狗大战的数据集下载地址为https://www.kaggle.com/c/dogs-vs-cats。其中数据集有12500只猫和12500只狗。或者你可以参考我的另外一篇python3-按关键字爬取百度图片地爬取任何你想要的图片。
下面我们把./data/cat_and_dog/train/dog/目录下的所有图片裁剪成227x227,
并保存在./data/cat_and_dog/train_r/dog/中:
import cv2 import os def resize_img(in_dir, out_dir=None, dim=(227, 227)): '''参考《TensorFlow深度学习应用实践》p171''' os.makedirs(out_dir, exist_ok=True) for file in os.listdir(in_dir): filepath = os.path.join(in_dir, file) print("HHHA:0====>", filepath) try: image = cv2.imread(filepath) resized = cv2.resize(image, dim) path = os.path.join(out_dir, file) cv2.imwrite(path, resized) except: print("【图片无法转换】:", filepath) #os.remove(filepath) cv2.waitKey(0) if __name__ == "__main__": resize_img("./data/cat_and_dog/train/dog/", "./data/cat_and_dog/train_r/dog/")