为了实现这个需求,我们可以使用 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,下载图片,并将其保存到指定的目录。然后,它会对每张图片进行数据增强(在这里是随机旋转),并保存增强的图片。你可以根据需要添加更多的数据增强操作。