Python读取含url图片链接的txt文档方法小结

 更新时间:2024年04月09日 08:32:10   作者:学地理的小胖砸  
这篇文章主要为大家详细介绍了三种Python读取含url图片链接的txt文档方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

方法一

我本地有一个face.txt文档,里面是50条url图片链接。帮我写一段python做一下数据增强,额外再生成200张。

数据增强通常用于图像处理任务,比如通过旋转、缩放、裁剪、翻转等方式增加图像的多样性。但是,如果你只有图片的URL,并不能直接对这些URL进行图像增强。然而,我们可以采用一种间接的方式来模拟增加数据量:例如,通过下载图片并改变图片的保存位置、格式,或者模拟一些简单的变化(如添加噪声)来生成新的URL。

但请注意,这实际上并没有增加图像本身的多样性,只是改变了图像的保存方式或路径。如果你真的需要对图像本身进行数据增强,你需要先下载图像,然后使用图像处理库(如OpenCV或PIL)进行图像变换。

下面是一个简单的Python脚本,它会读取face.txt文件中的URL,并模拟生成额外的URL。请注意,这只是一个模拟过程,并没有真正下载或增强图像。

import os
import random
import string

# 读取face.txt文件中的URL
with open('face.txt', 'r') as f:
    urls = f.read().splitlines()

# 生成额外URL的函数
def generate_extra_urls(base_urls, num_extra):
    extra_urls = []
    for _ in range(num_extra):
        base_url = random.choice(base_urls)
        # 这里我们简单地通过添加随机字符串来模拟新的URL
        # 在实际应用中,你可能需要更复杂的策略来生成有意义的URL
        random_str = ''.join(random.choices(string.ascii_uppercase + string.digits, k=10))
        extra_url = f"{base_url}?extra={random_str}"
        extra_urls.append(extra_url)
    return extra_urls

# 生成200个额外的URL
extra_urls = generate_extra_urls(urls, 200)

# 将原始URL和额外生成的URL合并
all_urls = urls + extra_urls

# 将所有URL写入新的文件
with open('all_faces.txt', 'w') as f:
    for url in all_urls:
        f.write(f"{url}\n")

print("数据增强完成,所有URL已写入all_faces.txt文件。")

这个脚本首先读取face.txt文件中的URL,然后定义一个函数generate_extra_urls来生成额外的URL。这个函数通过从原始URL中随机选择一个,并在其后添加一个随机字符串来模拟新的URL。最后,所有URL(包括原始的和生成的)都被写入all_faces.txt文件。

请注意,这只是一个非常简单的示例,并且生成的URL可能在实际应用中并不具有实际意义。如果你真的需要进行图像增强,你应该考虑下载图像并使用图像处理库进行实际的图像变换。

方法二

如果你想要对图像进行实际的数据增强,而不是仅仅生成新的URL,你需要首先下载这些图像,然后使用图像处理技术来增加图像的多样性。这里是一个基本的步骤指南,以及你可以使用的Python库:

1.下载图像:

使用requests库从URL下载图像,并保存到本地文件夹。

2.图像数据增强:

使用OpenCV或PIL(Python Imaging Library,也称为Pillow)对图像进行变换。以下是一些常见的数据增强方法:

  • 几何变换:翻转、旋转、裁剪、缩放、平移等。
  • 像素变换:添加噪声、模糊、颜色变换、对比度调整等。

3.保存增强后的图像:

将增强后的图像保存到新的文件夹或数据库中。

4.管理增强数据:

你可能需要记录每个增强图像与其原始图像的关系,以便在训练模型时能够正确地使用它们。

下面是一个简化的Python代码示例,展示如何下载图像并进行基本的数据增强:

import os
import requests
from PIL import Image, ImageOps, ImageEnhance
import numpy as np
import random

# 下载图像的函数
def download_image(url, save_path):
    response = requests.get(url, stream=True)
    if response.status_code == 200:
        with open(save_path, 'wb') as f:
            for chunk in response:
                f.write(chunk)
    else:
        print(f"Failed to download image from {url}")

# 图像增强的函数
def enhance_image(image_path, output_dir):
    # 读取图像
    image = Image.open(image_path)
    
    # 几何变换示例:随机翻转
    if random.choice([True, False]):
        image = ImageOps.flip(image)
    
    # 像素变换示例:添加噪声
    if random.choice([True, False]):
        noise = np.random.normal(0, 10, image.size)
        noisy_image = Image.fromarray(np.clip(image + noise, 0, 255).astype(np.uint8))
        image = noisy_image
    
    # 保存增强后的图像
    output_path = os.path.join(output_dir, f"enhanced_{os.path.basename(image_path)}")
    image.save(output_path)

# 读取face.txt文件中的URL
with open('face.txt', 'r') as f:
    urls = f.read().splitlines()

# 下载并增强图像的目录
download_dir = 'downloaded_images'
enhanced_dir = 'enhanced_images'

# 如果目录不存在,则创建它们
if not os.path.exists(download_dir):
    os.makedirs(download_dir)
if not os.path.exists(enhanced_dir):
    os.makedirs(enhanced_dir)

# 下载并增强图像
for url in urls:
    image_path = os.path.join(download_dir, f"face_{os.path.basename(url.split('/')[-1])}")
    download_image(url, image_path)
    enhance_image(image_path, enhanced_dir)

print("数据增强完成,增强后的图像已保存在", enhanced_dir)

请注意,这只是一个非常基础的示例,实际的图像增强可能需要更复杂的策略和参数调整。此外,为了获得最佳效果,你可能需要针对你的特定任务和数据集调整增强方法。

最后,务必确保在下载和使用图像时遵守相关版权和隐私法规。如果你打算在商业项目中使用这些数据,确保你有权这样做,或者考虑使用经过授权的数据集。

方法三

如果你需要一个更复杂的解决方案来进行图像数据增强,那么你可以考虑使用imgaug(Image Augmentation)库。imgaug是一个强大且灵活的图像增强库,它提供了大量的预定义增强方法,并且允许你自定义自己的增强策略。

以下是一个使用imgaug进行图像数据增强的Python代码示例:

import os
import requests
from PIL import Image
import imgaug as ia
from imgaug import augmenters as iaa

# 下载图像的函数
def download_image(url, save_path):
    response = requests.get(url, stream=True)
    if response.status_code == 200:
        with open(save_path, 'wb') as f:
            for chunk in response:
                f.write(chunk)
    else:
        print(f"Failed to download image from {url}")

# 定义数据增强序列
def create_augmentation_seq():
    seq = iaa.Sequential([
        iaa.Fliplr(0.5),  # 水平翻转,50%的概率
        iaa.Flipud(0.5),  # 垂直翻转,50%的概率
        iaa.Affine(
            rotate=(-20, 20),  # 随机旋转,范围在-20到20度之间
            scale=(0.8, 1.2),  # 随机缩放,范围在0.8到1.2倍之间
            translate_percent={"x": (-0.1, 0.1), "y": (-0.1, 0.1)},  # 随机平移,范围在-10%到10%之间
            mode="constant",  # 使用常数填充新的像素
            cval=(0, 255)    # 填充像素的值范围
        ),
        iaa.AdditiveGaussianNoise(loc=0, scale=(0.0, 0.05*255), per_channel=0.5),  # 添加高斯噪声
        iaa.ContrastNormalization((0.7, 1.3)),  # 对比度归一化
    ], random_order=True)  # 每次应用增强时的顺序是随机的
    return seq

# 主程序
def main():
    # 读取face.txt文件中的URL
    with open('face.txt', 'r') as f:
        urls = f.read().splitlines()

    # 下载图像的目录
    download_dir = 'downloaded_images'
    # 增强后图像的目录
    augmented_dir = 'augmented_images'

    # 创建目录
    if not os.path.exists(download_dir):
        os.makedirs(download_dir)
    if not os.path.exists(augmented_dir):
        os.makedirs(augmented_dir)

    # 创建数据增强序列
    seq = create_augmentation_seq()

    # 下载并增强图像
    for idx, url in enumerate(urls):
        image_path = os.path.join(download_dir, f"face_{idx}.jpg")
        download_image(url, image_path)

        # 读取图像
        image = Image.open(image_path)
        # 将PIL图像转换为numpy数组
        image_array = np.array(image)

        # 应用数据增强
        augmented_images = seq(images=[image_array])

        # 保存增强后的图像
        for i, aug_image in enumerate(augmented_images):
            aug_image_path = os.path.join(augmented_dir, f"face_{idx}_aug_{i}.jpg")
            Image.fromarray(aug_image).save(aug_image_path)

    print("数据增强完成,增强后的图像已保存在", augmented_dir)

# 运行主程序
if __name__ == "__main__":
    main()

这个脚本首先定义了一个download_image函数来下载图像,并定义了一个create_augmentation_seq函数来创建一个包含多种增强方法的序列。然后,主程序main读取URL列表,下载图像,并使用定义的增强序列对每个图像进行增强。增强后的图像被保存在一个单独的目录中。

请注意,这个脚本假设所有的URL都指向JPEG格式的图像,并且所有的图像都可以被正确下载。在实际应用中,你可能需要添加额外的错误处理和验证逻辑。此外,这个脚本使用的是随机增强,每次运行时都会得到不同的增强结果。

最后,确保你已经安装了imgaug库和它的依赖项。你可以使用pip来安装它

以上就是Python读取含url图片链接的txt文档方法小结的详细内容,更多关于Python读取含图片文档的资料请关注程序员之家其它相关文章!

相关文章

  • Python?4种实现定时任务的方案

    Python?4种实现定时任务的方案

    这篇文章主要给大家分享了Python?4种实现定时任务的方案,运用 while True: + sleep()、Timeloop 库、threading.Timer 、内置模块 sched ,下面就来看看具体的实现过程吧
    2021-12-12
  • django跳转页面传参的实现

    django跳转页面传参的实现

    这篇文章主要介绍了django跳转页面传参的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-09-09
  • Python print不能立即打印的解决方式

    Python print不能立即打印的解决方式

    今天小编就为大家分享一篇Python print不能立即打印的解决方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • python中pygame针对游戏窗口的显示方法实例分析(附源码)

    python中pygame针对游戏窗口的显示方法实例分析(附源码)

    这篇文章主要介绍了python中pygame针对游戏窗口的显示方法,以完整实例形式较为详细的分析了pygame响应键盘按键改变窗口显示效果的相关实现技巧,需要的朋友可以参考下
    2015-11-11
  • Python入门教程 超详细1小时学会Python

    Python入门教程 超详细1小时学会Python

    本文适合有经验的程序员尽快进入Python世界.特别地,如果你掌握Java和Javascript,不用1小时你就可以用Python快速流畅地写有用的Python程序.
    2006-09-09
  • python爬虫之selenium模块

    python爬虫之selenium模块

    本文详细讲解了python爬虫之selenium模块,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-06-06
  • 深入理解numpy广播机制

    深入理解numpy广播机制

    广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式,本文深入理解numpy广播机制,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • Windows和Linux下使用Python访问SqlServer的方法介绍

    Windows和Linux下使用Python访问SqlServer的方法介绍

    这篇文章主要介绍了Windows和Linux下使用Python访问SqlServer的方法介绍,本文讲解了Windows下配置Python访问Sqlserver、Linux下配置Python访问SqlServer等内容,需要的朋友可以参考下
    2015-03-03
  • python requests response值判断方式

    python requests response值判断方式

    这篇文章主要介绍了python requests response值判断方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-04-04
  • 一篇文章教你掌握python数据类型的底层实现

    一篇文章教你掌握python数据类型的底层实现

    这篇文章主要介绍了Python 数据类型的底层实现原理分析,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-09-09

最新评论

?


http://www.vxiaotou.com