python做数据增强face.txt文档,50条url图片链接再生成200张

动态资讯   2023-12-29 11:09   178   0  

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