对一个文件夹下的图片进行批量缩放(resize)处理

2023-11-02

问题背景

使用GPU训练时,有时出现了图片太大,导致处理起来速度慢或内存不够崩掉的情况,因此需要对原图片进行缩放。
本文介绍了批量处理的方法,成功将一个文件下的所有图片(较大)都resize至512*512像素。

环境配置

首先需要安装cv库
方法:

pip install opencv-python

速度慢或者安装不上可以试试:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ opencv-python
pip install -i https://pypi.mirrors.ustc.edu.cn/simple/ opencv-python

完整代码

import os
import cv2

content_dirs = []
resize_img_dir = 'resize_pic/'
if os.path.exists(resize_img_dir):
    pass
else:
    os.makedirs(resize_img_dir)

def read_directory(directory_name):
    for filename in os.listdir(r"./" + directory_name):
        content_dirs.append(filename)
    return content_dirs


def main():
    Process_dir = 'source'#这里换成你需要resize的图片文件夹名
    print("-------------begin resize process-------------")
    c_dirs = read_directory(Process_dir)
    for c_dir in c_dirs:
        pro_dir = Process_dir+'/'+c_dir
        img_array = cv2.imread(pro_dir, cv2.IMREAD_COLOR)
        resize_img = cv2.resize(img_array, (512, 512), interpolation=cv2.INTER_CUBIC)
        print("successfully resize "+c_dir)
        cv2.imwrite(resize_img_dir+c_dir, resize_img)
    return c_dirs


if __name__ == '__main__':
    main()
    print("-------------resize process finished-------------")
    print("-------------请在resize_pic文件夹下获取resize后的图片-------------")



代码解释

def read_directory(directory_name):
    for filename in os.listdir(r"./" + directory_name):
        content_dirs.append(filename)
    return content_dirs

这段代码返回同一个文件夹下所有图片的名称。

def main():
    Process_dir = 'content'#这里可以把'content'换成你的那个包含所有图片的文件夹名
    print("-------------begin resize process-------------")
    c_dirs = read_directory(Process_dir)
    for c_dir in c_dirs:
        pro_dir = Process_dir+'/'+c_dir
        img_array = cv2.imread(pro_dir, cv2.IMREAD_COLOR)
        resize_img = cv2.resize(img_array, (512, 512), interpolation=cv2.INTER_CUBIC)#512,512可以换为1024*1024或其他别的
        print("successfully resize "+c_dir)
        cv2.imwrite(resize_img_dir+c_dir, resize_img)
    return c_dirs

这段代码用于将’content_pic’文件夹下面所有的图片resize为(512,512)大小。处理完之后全部保存在resize_img_dir对应的文件夹下,图片名称不变。
1.512,512可以更换为你需要的大小,比如1024*1024
2.这里可以把"content"换成你的设备上包含图片的文件夹名字。注意!这里使用的是绝对路径。

另一种更简单的写法

from PIL import Image
import os

# 设置新尺寸
new_size = (512, 512)

# 获取当前文件夹路径
folder_path = os.getcwd()

# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
    # 如果是图片文件
    if filename.endswith(".jpg") or filename.endswith(".jpeg") or filename.endswith(".png"):
        # 打开图片文件
        with Image.open(os.path.join(folder_path, filename)) as img:
            # 将图片调整为新尺寸
            img = img.resize(new_size, resample=Image.LANCZOS)
            # 保存图片文件
            img.save(os.path.join(folder_path, filename))

把这个python文件放在包含图片的文件夹中,直接运行,将会直接修改当前文件夹下所有图片的尺寸至(512*512)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对一个文件夹下的图片进行批量缩放(resize)处理 的相关文章

  • 如何生成给定范围内的回文数列表?

    假设范围是 1 X 120 这是我尝试过的 gt gt gt def isPalindrome s check if a number is a Palindrome s str s return s s 1 gt gt gt def ge
  • 打破嵌套循环[重复]

    这个问题在这里已经有答案了 有没有比抛出异常更简单的方法来打破嵌套循环 在Perl https en wikipedia org wiki Perl 您可以为每个循环指定标签 并且至少继续一个外循环 for x in range 10 fo
  • 安装后 Anaconda 提示损坏

    我刚刚安装张量流GPU创建单独的后环境按照以下指示here https github com antoniosehk keras tensorflow windows installation 但是 安装后当我关闭提示窗口并打开新航站楼弹出
  • 从列表中的数据框列中搜索部分字符串匹配 - Pandas - Python

    我有一个清单 things A1 B2 C3 我有一个 pandas 数据框 其中有一列包含用分号分隔的值 某些行将包含与上面列表中的一项的匹配 它不会是完美的匹配 因为它在其中包含字符串的其他部分 该列 例如 该列中的一行可能有 哇 这里
  • Python 中的二进制缓冲区

    在Python中你可以使用StringIO https docs python org library struct html用于字符数据的类似文件的缓冲区 内存映射文件 https docs python org library mmap
  • 在pyyaml中表示具有相同基类的不同类的实例

    我有一些单元测试集 希望将每个测试运行的结果存储为 YAML 文件以供进一步分析 YAML 格式的转储数据在几个方面满足我的需求 但测试属于不同的套装 结果有不同的父类 这是我所拥有的示例 gt gt gt rz shorthand for
  • 当玩家触摸屏幕一侧时,如何让 pygame 发出警告?

    我使用 pygame 创建了一个游戏 当玩家触摸屏幕一侧时 我想让 pygame 给出类似 你不能触摸屏幕两侧 的错误 我尝试在互联网上搜索 但没有找到任何好的结果 我想过在屏幕外添加一个方块 当玩家触摸该方块时 它会发出警告 但这花了很长
  • Geopandas 设置几何图形:MultiPolygon“等于 len 键和值”的 ValueError

    我有 2 个带有几何列的地理数据框 我将一些几何图形从 1 个复制到另一个 这对于多边形效果很好 但对于任何 有效 多多边形都会返回 ValueError 请指教如何解决这个问题 我不知道是否 如何 为什么应该更改 MultiPolygon
  • 如何将 numpy.matrix 提高到非整数幂?

    The 运算符为numpy matrix不支持非整数幂 gt gt gt m matrix 1 0 0 5 0 5 gt gt gt m 2 5 TypeError exponent must be an integer 我想要的是 oct
  • Python 3 中“map”类型的对象没有 len()

    我在使用 Python 3 时遇到问题 我得到了 Python 2 7 代码 目前我正在尝试更新它 我收到错误 类型错误 map 类型的对象没有 len 在这部分 str len seed candidates 在我像这样初始化它之前 se
  • 从 pygame 获取 numpy 数组

    我想通过 python 访问我的网络摄像头 不幸的是 由于网络摄像头的原因 openCV 无法工作 Pygame camera 使用以下代码就像魅力一样 from pygame import camera display camera in
  • Nuitka 未使用 nuitka --recurse-all hello.py [错误] 编译 exe

    我正在尝试通过 nuitka 创建一个简单的 exe 这样我就可以在我的笔记本电脑上运行它 而无需安装 Python 我在 Windows 10 上并使用 Anaconda Python 3 我输入 nuitka recurse all h
  • 如何将 PIL 图像转换为 NumPy 数组?

    如何转换 PILImage来回转换为 NumPy 数组 这样我就可以比 PIL 进行更快的像素级转换PixelAccess允许 我可以通过以下方式将其转换为 NumPy 数组 pic Image open foo jpg pix numpy
  • 如何在 Django 中使用并发进程记录到单个文件而不使用独占锁

    给定一个在多个服务器上同时执行的 Django 应用程序 该应用程序如何记录到单个共享日志文件 在网络共享中 而不保持该文件以独占模式永久打开 当您想要利用日志流时 这种情况适用于 Windows Azure 网站上托管的 Django 应
  • Python:计算字典的重复值

    我有一本字典如下 dictA unit1 test1 alpha unit1 test2 beta unit2 test1 alpha unit2 test2 gamma unit3 test1 delta unit3 test2 gamm
  • 检查所有值是否作为字典中的键存在

    我有一个值列表和一本字典 我想确保列表中的每个值都作为字典中的键存在 目前我正在使用两组来确定字典中是否存在任何值 unmapped set foo set bar keys 有没有更Pythonic的方法来测试这个 感觉有点像黑客 您的方
  • 如何从没有结尾的管道中读取 python 中的 stdin

    当管道来自 打开 时 不知道正确的名称 我无法从 python 中的标准输入或管道读取数据 文件 我有作为例子管道测试 py import sys import time k 0 try for line in sys stdin k k
  • 循环标记时出现“ValueError:无法识别的标记样式 -d”

    我正在尝试编码pyplot允许不同标记样式的绘图 这些图是循环生成的 标记是从列表中选取的 为了演示目的 我还提供了一个颜色列表 版本是Python 2 7 9 IPython 3 0 0 matplotlib 1 4 3 这是一个简单的代
  • 在 Python 类中动态定义实例字段

    我是 Python 新手 主要从事 Java 编程 我目前正在思考Python中的类是如何实例化的 我明白那个 init 就像Java中的构造函数 然而 有时 python 类没有 init 方法 在这种情况下我假设有一个默认构造函数 就像
  • 协方差矩阵的对角元素不是 1 pandas/numpy

    我有以下数据框 A B 0 1 5 1 2 6 2 3 7 3 4 8 我想计算协方差 a df iloc 0 values b df iloc 1 values 使用 numpy 作为 cov numpy cov a b I get ar

随机推荐

  • it is forbidden to set both [discovery.seed_hosts] and [discovery.zen.ping.unicast.hosts]

    it is forbidden to set both discovery seed hosts and discovery zen ping unicast hosts 这段英文已经很明显了 discovery seed hosts 和
  • Postgresql missing FROM-clause entry for table "t"

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 近日工作碰到一个PG error missing FROM clause entry for table t 这个错误基本上出现在选择列或者where语句后面引用了t2的表
  • 算法题for THS

    第一题 穷尽集合之间的元素组合 public class THS01 public static List
  • Centos Ubuntu防爆破ssh脚本

    Centos 7方式 黑名单IP touch etc black txt ssh 防爆破脚本 cat etc secure ssh sh bin bash cat var log secure awk Failed print NF 3 s
  • React 18 新特性(二):Suspense & SuspenseList

    本文已收录在 Github https github com beichensky Blog 中 欢迎 Star 欢迎 Follow 前言 本文介绍了 React 18 版本中 Suspense 组件和新增 SuspenseList 组件的
  • 给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。...

    给定两个字符串 s 和 t 它们只包含小写字母 字符串 t 由字符串 s 随机重排 然后在随机位置添加一个字母 请找出在 t 中被添加的字母 示例 输入 s abcd t abcde 输出 e 解题思路 该题的解法和上一篇我们解决问题的思路
  • L1-077 大笨钟的心情 - java

    L1 077 大笨钟的心情 Java javac 时间限制 600 ms 内存限制 64 MB 其他编译器 时间限制 400 ms 内存限制 64 MB 题目描述 有网友问 未来还会有更多大笨钟题吗 笨钟回复说 看心情 本题就请你替大笨钟写
  • 灵越7590BIOS升级到1.6版本无法回退

    我的电脑是戴尔灵越7590 这个方法适用于我的电脑 不知道其余电脑怎么样
  • 时间序列预测(2):AI助力精准气象和海洋预测

    文章目录 一 背景 二 数据预处理 数据简介 训练数据标签说明 测试数据说明 模型评估指标 数据的转换 三 模型的构建和预测 构建训练集 训练模型 模型评估 模型预测 四 模型的改进方向 引言 本文主要是记载学习阿里天池大数据时间序列预测竞
  • 自定义maven骨架(多模块),生成项目工程

    背景 业务快速发展或重构期 会有大量的项目工程使用 每次都搭建的话 费时费力 版本啥的不好维护 故应该使用同一脚手架 大部分互联网应该都有使用 可以将脚手架做成maven骨架 每次新建项目 可以使用骨架快速生成 简单演示多模块骨架生成和使用
  • 错误贴

    pod 报错 bash usr local bin pod System Library Frameworks Ruby framework Versions 2 0 usr bin ruby bad interpreter No such
  • 软件测试需要学什么?测试学习大纲梳理

    很多新手 不知道软件测试学习该如何开始 软件测试需要掌握哪些知识 下面是根据本人的理解 粗略整理的一个学习大纲 基本上涵盖了软件测试工程师需要掌握的全部技能 希望对刚入行或者准备学习测试的朋友提供一点指引 1 测试基础理论 不管有没有计算机
  • elasticsearch倒排索引与TF-IDF算法

    elasticsearch专栏 https www cnblogs com hello shf category 1550315 html 一 倒排索引 Inverted Index 简介 在关系数据库系统里 索引是检索数据最有效率的方式
  • nvm-windows下载管理node版本工具

    1 下载地址 https github com coreybutler nvm windows releases 2 nvm常用指令 配置nvm的镜像服务器 nvm node mirror https npmmirror com mirro
  • 二叉搜索树的最近公共祖先

    题目描述 给定一棵二叉搜索树的先序遍历序列 要求你找出任意两结点的最近公共祖先结点 简称 LCA 输入 输入的第一行给出两个正整数 待查询的结点对数 M 1 000 和二叉搜索树中结点个数 N 10 000 随后一行给出 N 个不同的整数
  • CentOS 7 安装Libevent

    CentOS 7 安装Libevent 1 下载安装包 新版本是libevent 2 1 12 stable tar gz 如果你的系统已经安装了libevent 可以不用安装 官网 http www monkey org provos l
  • Java学习:打印金字塔和九九乘法表

    在打印金字塔之前 练习打印如图图形 采用双重循环 分别控制行数和每行打印星星的个数 java代码 package com lissdy public class tuxing1 public static void main String
  • 关于threeJS加载模型的坑(obj+mtl)

    threeJs加载模型时 有些材质是透明的 如果忘记设置就会出现几何片的样子 如图 模型加载之后添加模型的材质透明度 object traverse function child if child instanceof THREE Mesh
  • PMSM FOC位置环S曲线控制算法(恒定急动度)

    文章目录 一 原理 二 代码 之前做FOC位置环控制的时候 简单地加了一个S曲线控制 参考链接如下 FOC 单电阻采样 位置环控制伺服电机 这里面代码实现其实就是在每step个ADC中断中 根据函数 f x
  • 对一个文件夹下的图片进行批量缩放(resize)处理

    文章目录 问题背景 环境配置 完整代码 代码解释 另一种更简单的写法 问题背景 使用GPU训练时 有时出现了图片太大 导致处理起来速度慢或内存不够崩掉的情况 因此需要对原图片进行缩放 本文介绍了批量处理的方法 成功将一个文件下的所有图片 较