当前位置: 首页 > news >正文

Python批量设置图片背景为透明

我们日常生活中制作PPT等教学资源时,需要批量去除图片背景,就可以使用 Python 的 rembg 库。

这个库基于神经网络模型,去背景效果较好,可以批量处理png, jpg, jpeg等图片。采用以下代码可以批量处理当前目录下的所有图片,去除背景后并保存为透明背景的图像存在output当中。

一、安装rembg库

不过,使用前需要在cmd下或者pycharm, thonny等pyhon的idle调试工具中安装一下这个rembg库,安装代码:

pip install rembg

二、下载u2net.onnx机器学习模型

安装完成rembg模块后,第一次运行程序,调用这个模块,还需要安装机器学习模型:u2net.onnx,大小为176M,程序会自动下载,全程不需要干涉。

下载机器学习模型

这个模型文件 (u2net.onnx) 是经过训练的深度学习模型,包含了用于识别并分离前景和背景的算法权重。rembg 库使用 U2-Net 来执行背景去除的任务。第一次使用 rembg 时,库会自动下载这个模型文件,以确保能够正确运行背景去除功能。

具体来说:模型文件 u2net.onnx:U2-Net 模型是一个开源的图像分割模型,专门用于前景-背景分离。rembg 使用这个模型的 .onnx 文件格式,方便兼容各种框架。

由于rembg 没有默认包含该模型文件,因此在第一次运行时需要下载并存储在本地(C:\Users\用户名\.u2net\u2net.onnx),下载完成后,模型文件会保存在你用户目录的 .u2net 文件夹中,后续运行 rembg 就不需要重新下载。

三、编写清除图片背景代码

下载完成后,程序会自动运行清除背景的程序,如下面的程序,批量把当前目录下的图片文件,移除背景,设置透明背景后存在output文件夹下面,全程操作非常的快。

import os
from rembg import remove
from PIL import Image# 定义输入和输出文件夹
input_folder = '.'  # 当前目录
output_folder = './output/'  # 输出文件夹# 创建输出文件夹(如果不存在)
# if not os.path.exists(output_folder):
os.makedirs(output_folder,exist_ok=True)# 遍历当前目录的所有文件
for filename in os.listdir(input_folder):# 检查是否为图像文件(可以添加更多格式)if filename.lower().endswith(('.png', '.jpg', '.jpeg')):input_path = os.path.join(input_folder, filename)output_path = os.path.join(output_folder, filename.split('.')[0] + '_no_bg.png')# 打开图像并去除背景with open(input_path, 'rb') as input_file:input_image = input_file.read()output_image = remove(input_image)# 将结果保存为 PNG 格式with open(output_path, 'wb') as output_file:output_file.write(output_image)print("图片背景已去除并保存到 'output' 文件夹。")

input_folder 指定输入文件夹,这里设为当前目录 ./。

output_folder 是输出文件夹(去除背景后的图片保存位置),如果不存在,则会自动创建。

脚本遍历当前目录中的所有图像文件(.png, .jpg, .jpeg),去除背景后以透明背景 PNG 格式保存到 output 文件夹中。

四、效果对比

以下是清除背景前后的效果对比,怎么样,还算不错吧?

清除背景前:

清除背景后:

五、学后总结

Python像瑞士军刀一样,几乎无所不能,尤其是在办公自动化、批量处理上更是有先天的优势。更为重要的是学习生态也很好,大语言模型背后很多时候就是在用python来操作,所以从现在起立一个小小的flag,学起来,天长日久,必有所获。

相关文章:

Python批量设置图片背景为透明

我们日常生活中制作PPT等教学资源时,需要批量去除图片背景,就可以使用 Python 的 rembg 库。 这个库基于神经网络模型,去背景效果较好,可以批量处理png, jpg, jpeg等图片。采用以下代码可以批量处理当前目录下的所有图片&#xf…...

Vue CLI 脚手架

cli脚手架创建项目步骤 全局安装(一次):yarn global add vue/cli 无法识别yarn的要先安装yarn;终端执行npm install -g yarn 查看Vue版本:vue --version 这里有问题(success上方有warning) 报错:‘vue’不是内部或外部…...

Linux【基础篇】

-- 原生罪 linux的入门安装学习 什么是操作系统? 用户通过操作系统和计算机硬件联系使用。桥梁~ 什么是Linux? 他是一套开放源代码(在互联网上找到Linux系统的源代码,C语言写出的软件),可以自由 传播&…...

多线程环境下安全地使用 SimpleDateFormat的常见方法

文章目录 1. 使用局部变量&#xff08;每个线程独立一个实例&#xff09;2. 使用 ThreadLocal<SimpleDateFormat>3. 使用 DateTimeFormatter&#xff08;Java 8 及以上&#xff09;4. 使用 DateFormat 子类&#xff08;如 FastDateFormat&#xff09;5. 使用 synchronize…...

easyexcel实现自定义的策略类, 最后追加错误提示列, 自适应列宽,自动合并重复单元格, 美化表头

easyexcel实现自定义的策略类, 最后追加错误提示列, 自适应列宽,自动合并重复单元格, 美化表头 原版表头和表体字体美化自动拼接错误提示列自适应宽度自动合并单元格使用Easyexcel使用poi导出 在后台管理开发的工作中,离不开的就是导出excel了. 如果是简单的导出, 直接easyexce…...

ANDROIDWORLD: A Dynamic Benchmarking Environment for Autonomous Agents论文学习

这个任务是基于androidenv的。这个环境之前学过&#xff0c;是一个用来进行强化学习的线上环境。而这篇文章的工作就是要给一些任务加上中间的奖励信号。这种训练环境的优点就是动态&#xff0c;与静态的数据集&#xff08;比如说我自己的工作&#xff09;不同&#xff0c;因此…...

Docker 常用命令详解(详细版)

Docker 是一个开源的容器化平台&#xff0c;它使得开发人员可以打包应用程序及其所有依赖项&#xff0c;并在任何环境中运行。Docker 提供了简单而强大的命令行工具来管理容器、镜像、网络等。本文将详细介绍 Docker 的常用命令及其使用方法。 1. 安装 Docker 在使用 Docker …...

【网络安全 | 甲方安全建设】分布式系统、Redis分布式锁及Redisson看门狗机制

未经许可,不得转载。 文章目录 分布式系统分布式系统的核心特性分布式系统的典型架构分布式锁概念Redis 分布式锁原理互斥性锁释放锁的唯一性具体实现Redisson分布式锁分布式系统 分布式系统是一种由多台计算机(节点)组成的系统,这些节点通过网络相互连接并协同工作,共同…...

「QT」几何数据类 之 QLineF 浮点型直线类

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「QT」QT5程序设计&#x1f4da;全部专栏「VS」Visual Studio「C/C」C/C程序设计「UG/NX」BlockUI集合「Win」Windows程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「PK」Parasolid…...

Treeland 技术揭秘,如何使得 DDE 纵享丝滑?

近日&#xff0c;deepin&#xff08;深度&#xff09;社区亮相COSCon24 第九届中国开源年会开源市集&#xff0c;且社区资深桌面研发工程师张丁元为大家来了《Treeland&#xff0c;DDE进步的阶梯》技术分享。 就着这个机会&#xff0c;今天就让我们一起来聊聊如何在追求华丽动…...

快速了解SpringBoot 统一功能处理

拦截器 什么是拦截器&#xff1a; 拦截器是Spring框架提供的重要功能之一&#xff0c;主要进行拦截用户请求&#xff0c;在指定方法前后&#xff0c;根据业务需求&#xff0c;执行预先设定的代码。 也就是说,允许开发⼈员提前预定义⼀些逻辑,在⽤⼾的请求响应前后执⾏.也可以…...

C++区分数组的引用和引用的数组

void f(int (&arr)[10]) {//正确} void f1(int &arr[10]) {//不允许使用引用的数组} []&#xff08;数组下标运算符&#xff09;的优先级高于&&#xff08;取地址运算符&#xff09;。所有表达式&arr[i]等价于&(arr[i]) 引用的数组 一个包含引用的数组&…...

【harbor】离线安装2.9.0-arm64架构服务制作和升级部署

harbor官网地址&#xff1a;Harbor 参考文档可以看这里&#xff1a;部署 harbor 2.10.1 arm64 - 简书。 前提环境准备&#xff1a; 安装docker 和 docker-compose 先拉arm64架构的harbor相关镜像 docker pull --platformlinux/arm64 ghcr.io/octohelm/harbor/harbor-regist…...

ESLint 使用教程(五):ESLint 和 Prettier 的结合使用与冲突解决

前言 在现代前端开发中&#xff0c;代码质量与代码风格的统一是两个非常重要的方面。良好的代码质量能减少 bug 的产生&#xff0c;而统一的代码风格则能提高团队协作的效率。为了实现这两个目标&#xff0c;我们通常会使用一些工具。 为了保证代码的可读性和维护性&#xff0…...

uniApp之uni-file-picker使用踩坑

标题党~也不算坑吧 就是初体验 上传是需要存储一下子的&#xff0c;我以为uniApp是自己免费开的服务给大家中转使用&#xff0c;就没管这个事&#xff0c;但是官网是这么说的&#xff1a; 就我是怎么发现的&#xff0c;使用了一段时间后&#xff0c;上传的图片都裂了&#xff…...

【C语言】。末尼

用js写一个冒泡排序 当然可以。在JavaScript中&#xff0c;你可以使用递归的方式来实现冒泡排序算法。这是一个简单的示例&#xff1a; function bubbleSort(arr) { let len arr.length; if(len < 1){ return arr; // 如果数组只有一个元素或为空&#xf…...

【鉴权】深入解析 Token:身份认证的核心技术

目录 引言一、Token 的定义与概念1.1 Token 是什么&#xff1f;1.2 无状态性与自包含性1.3 Token 的工作流程1.3.1 基本工作流程1.3.2 工作流程图示 二、Token 的常见用途2.1 用户身份验证2.2 授权控制2.3 防止跨站请求伪造&#xff08;CSRF&#xff09;2.4 跨域认证 三、Token…...

FastReport将停止 .NET Framework 上的 WebReport 更新

从2024/ 12 /1 日起&#xff0c;Fastreport将停止发布更新和提供对 FastReport.Web (.NET Framework) 的技术支持。该库一直是使用 Online Designer 的许多项目中报告的核心。这些更改意味着 FastReport.Web (Legacy) 库&#xff08;FastReport.Net包的一部分&#xff09;将不再…...

面试:TCP、UDP如何解决丢包问题

文章目录 一、TCP丢包原因、解决办法1.1 TCP为什么会丢包1.2 TCP传输协议如何解决丢包问题1.3 其他丢包情况&#xff08;拓展&#xff09;1.4 补充1.4.1 TCP端口号1.4.2 多个TCP请求的逻辑1.4.3 处理大量TCP连接请求的方法1.4.4 总结 二、UDP丢包2.1 UDP协议2.1.1 UDP简介2.1.2…...

在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码

在Ubuntu下安装RabbitMQ、添加一个新的登录用户并设置密码 在Ubuntu下安装RabbitMQ可以按照以下步骤进行&#xff1a;步骤 1: 更新系统步骤 2: 安装Erlang步骤 3: 添加RabbitMQ仓库步骤 4: 更新APT索引并安装RabbitMQ步骤 5: 启动RabbitMQ服务步骤 6: 检查RabbitMQ状态步骤 7: …...

HTTPS通信和TCP通信有什么不一样

HTTPS通信和TCP通信的主要区别如下&#xff1a; ‌协议层次‌&#xff1a;HTTPS是应用层协议&#xff0c;建立在HTTP协议之上&#xff0c;并增加了SSL/TLS加密层&#xff1b;而TCP是传输层协议&#xff0c;提供可靠的数据传输服务。‌安全性‌&#xff1a;HTTPS通过SSL/TLS加密…...

Kafka 的一些问题,夺命15连问

kafka-中的组成员 kafka四大核心 生产者API 允许应用程序发布记录流至一个或者多个kafka的主题&#xff08;topics&#xff09;。 消费者API 允许应用程序订阅一个或者多个主题&#xff0c;并处理这些主题接收到的记录流 StreamsAPI 允许应用程序充当流处理器&#xff08;s…...

unity3d————延时函数

1.public void InvokeRepeating(string methodName, float time, float repeatRate); 延迟重复执行函数 InvokeRepeating 参数一&#xff1a;函数名字符串 参数二&#xff1a;第一次执行的延迟时间 参数三&#xff1a;之后每次执行的间隔时间 注意&#xff1a; 1-1.延时函数第…...

计算机学生自我提升方法——善用搜索引擎

计算机学生自我提升方法——善用搜索引擎 在信息爆炸的时代&#xff0c;计算机专业的学生如何有效地自我提升&#xff1f;答案可能就藏在一个简单却强大的工具——搜索引擎中。搜索引擎不仅是获取知识的入口&#xff0c;更是解决问题的利器。下面&#xff0c;我将分享一些善用…...

游戏引擎学习第一天

视频参考: https://www.bilibili.com/video/BV1zGDCYHErA/ 创建一个保存项目的路径 VS的安装略过&#xff0c;个人自行百度 1. vs 创建第一个CMAKE的窗口项目 game.cpp 修改如下的代码 到https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-winmain 去…...

uni-app view循环绑定click和 v-if

<view class"layout-wrap-item" v-for"(item, index) in menuItems" :key"index" click"item.clickHandler" :v-if"showMenu(item)"></view> const xxx (id) > { }; // 定义菜单项数组 const menuItems …...

Redis 高并发分布式锁实战

目录 环境准备 一 . Redis 安装 二&#xff1a;Spring boot 项目准备 三&#xff1a;nginx 安装 四&#xff1a;Jmeter 下载和配置 案例实战 优化一&#xff1a;加 synchronized 锁 优化二&#xff1a;使用 redis 的 setnx 实现分布式锁 优化三&#xff1a;使用 Lua 脚本…...

关于elementui el-radio 赋值问题

今天遇到这样的问题&#xff1a; 点击的时候&#xff0c;同时选中 照抄官网&#xff01; 后来发现了问题&#xff1a; 也就是说如果你的版本太低&#xff0c;就不能用value&#xff0c;而得用label&#xff0c;于是修改 <el-radio-group v-model"searchTime"&g…...

2024-11-6----Android 11(全志713m)----- 关于添加 Selinux 权限

需求 节点: /sys/devices/platform/motor0/motor_ctrl上层 APP 使用 JNI 需要对该节点进行 echo 的操作,操作失败。 添加前的验证工作 adb 进去验证下,如下图所示: 发现权限不够。su 以后再操作是OK的,如下图: 添加前的修改 为防止报权限错误,直接给777,因为该…...

shodan5(泷羽sec)

声明 学习视频来自B站UP主 泷羽sec,如涉及侵泷羽sec权马上删除文章。 笔记只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负 这节课旨在扩大自己在网络安全方面的知识面&#xff0c;了解网络安全领域的见闻&#xff0c;了…...

微信端的网站开发python/免费网站模板库

(农村老宅)&#xff08;点击即可收听&#xff09;桃花盛开正清明,门前小路依旧在,唯有不见已故人转瞬间,又是一年一度清明节年少,听雨歌楼上,红烛昏罗帐,不懂清明时节的庄严与肃穆,清朗,明净如今,人到中年,听雨客舟中,江阔云低,断雁叫西风世事无常,历经春夏秋冬,生老病死,在悲欢…...

最简单的做网站/搜索引擎优化教程

一.复习以下C语言&#xff08;指针、typedef、预处理&#xff09;(一)指针指针是地址&#xff0c;这句话是错误的。"指针是地址的类型"。具体的一个地址是指针类型的。指针类型 * 整数类型 int字符类型 char数据类型&#xff1a;"访问内存的方式"常量和变量…...

福田建网站费用/微信小程序开发教程

3DMax下载地址&#xff08;包含安装教程与注册方法&#xff09;&#xff1a;http://www.3d66.com/popsoft_1.html 3DMax已经自带导出为fbx格式的功能&#xff0c;所以无需安装fbx插件 Maya下载地址&#xff08;包含安装教程与注册方法&#xff09;&#xff1a;http://www.3d66.…...

福州网站建站建设/网络优化是做什么的

TouchMode模式1)singleTOP栈顶单实例如果A&#xff08;activity&#xff09;跳转到B&#xff08;activity&#xff09;后&#xff0c;B如果调用自身就会出多重复的B,这样子用户体验差&#xff0c;这时候&#xff0c;我们可以在清单中设置加载模式&#xff0c;模式为栈顶单实例&…...

网站免费正能量软件下载/滴滴友链

static最显著的两个作用&#xff1a;在类中修饰成员变量&#xff0c;修饰成员函数。这表示这些成员变量和成员函数是属于类的&#xff0c;不属于某个具体实例。初始化静态成员变量在进入main函数之前进行&#xff0c;且初始化只进行一次(如何建立单例&#xff0c;就是从这里入手…...

网站建设网络营销平台 云搜系统/今天最新的新闻头条

-- 我定义的存储过程如下&#xff0c;很简单的一个过程&#xff0c;并且在Cmd命令里面运行是正常的。USE appraisesystem;DROP procedure IF EXISTS protest;DELIMITER $$USE appraisesystem$$CREATE DEFINERroot% PROCEDURE protest(Word varchar(100),out lens int)BEGINset …...