为了实现这个需求,我们可以使用 requests
库来下载图片,并使用 PIL
(Python Imaging Library) 来对图片进行一些简单的增强操作,如旋转、裁剪、翻转等。
首先,确保你已经安装了必要的库:
pip install requests pillow
然后,你可以使用以下代码来读取 face.txt
中的URL,下载图片,并进行数据增强:
import requests from PIL import Image import io import random import string import os # 下载图片并保存到指定目录 def download_image(url, save_dir): response = requests.get(url) img = Image.open(io.BytesIO(response.content)) save_path = os.path.join(save_dir, f"img_{os.getpid()}.jpg") img.save(save_path) return save_path # 数据增强函数 - 随机旋转角度 def data_augmentation(image_path, save_dir): img = Image.open(image_path) angle = random.randint(0, 360) # 随机旋转0-360度 img_rotated = img.rotate(angle) save_path = os.path.join(save_dir, f"rotated_{angle}.jpg") img_rotated.save(save_path) return save_path # 生成随机字符串作为文件名前缀,以避免文件名冲突 def generate_random_string(length): return ''.join(random.choices(string.ascii_letters + string.digits, k=length)) # 主程序 def main(): url_file = "face.txt" # 替换为你的文件路径 save_dir = "enhanced_images" # 保存增强后的图片的目录,确保它存在 if not os.path.exists(save_dir): os.makedirs(save_dir) with open(url_file, "r") as f: for url in f: # 下载图片并保存到指定目录 image_path = download_image(url.strip(), save_dir) # 数据增强 - 随机旋转图片并保存新的图片 random_str = generate_random_string(5) # 生成一个5字符的随机字符串作为前缀,避免文件名冲突 rotated_image_path = data_augmentation(image_path, save_dir) print(f"Original Image: {image_path}, Rotated Image: {rotated_image_path}") # 你还可以添加其他的数据增强操作,例如翻转、裁剪等。 # ... # os.remove(image_path) # 如果你想删除原图,可以取消注释这一行。 if __name__ == "__main__": main()
这段代码首先从 face.txt 文件中读取URL,下载图片,并将其保存到指定的目录。然后,它会对每张图片进行数据增强(在这里是随机旋转),并保存增强的图片。你可以根据需要添加更多的数据增强操作。