【Opencv项目实战】背景替换:帮你的证件照换个背景色

news2024/9/24 5:42:21

文章目录

  • 方法一、基于removebg的背景替换
    • 1.1、removebg介绍
    • 1.2、环境配置
    • 1.3、算法详解
    • 1.4、实战:单张图片背景替换
    • 1.5、实战:多张图片背景替换
    • 1.6、实战:UI自选择图片进行背景替换
  • 方法二、基于backgroundremover的背景替换
    • 2.1、backgroundremover介绍
    • 2.2、环境配置
      • 2.2.1、Image命令行实现
      • 2.2.2、Video命令行实现

方法一、基于removebg的背景替换

1.1、removebg介绍

removebg官网:一款在线AI自动抠图免费工具(桌面版APP需注册账号)

removebg网站提供了API 接口,可以直接调用并实现抠图。图片必须有一个明显是前景的主题,例如人、动物、产品或汽车(更多信息)。

  • 使用API or APP每个月只有50张图片的免费处理权限;而网站的使用无限制且全免费。
    • 免费处理权限:只支持最高 25 万像素的小分辨率图片(如:625 × 400 像素),想要获得高像素抠图则需要花费credit。用完之后就会拒绝你的API请求。
    • 支持上传最大12 兆字节的任何JPG 或 PNG 图像。如果图像分辨率大于25 兆像素,则会将其调整为该最大分辨率。
    • 可以通过 API 同时处理500 张图像。在这里插入图片描述

1.2、环境配置

详细过程如下:
(1)安装removebg包:pip install removebg
离线安装包下载:Links for removebg
(2)Get API Key

获取 API Key 的详细过程如下:

- 11、removebg官网 - Pricing - Sign up free - 邮箱注册与账号激活。
- 22、登录 - My Account - APP -Keys - New API Key - Create API Key - Copy API Key - Save changes
- (my API Key:2BBwNqN61oZpaPqKmiF2ZGey)

1.3、算法详解

(1)调用API接口:RemoveBg函数完成图片抠图

函数说明:rmbg = RemoveBg(API_Key, "error.log")
输入参数:
				API_Key				字符串格式
				"error.log"			固定格式

(2)调用remove_background_from_img_file函数完成背景替换。

函数说明:rmbg.remove_background_from_img_file(img_file_path, size, bg_color)
输入参数:
				img_file_path		原始图片的路径
				size				输出图片的质量:regular=0.25MP(默认),hd=4MP,4k=up to 10MP。
				bg_color			输出图片的背景(如:green)
输出参数:
				自动保存结果在输入路径

1.4、实战:单张图片背景替换

在这里插入图片描述

from removebg import RemoveBg

rmbg = RemoveBg("YOUR-API-KEY", "error.log")		
rmbg.remove_background_from_img_file("photo.jpg")
# 输出图片,4k分辨率,白色背景

1.5、实战:多张图片背景替换

from removebg import RemoveBg
import os

rmbg = RemoveBg("YOUR-API-KEY", "error.log")
path='%s/picture' %os.getcwd()		# 将生成结果放在当前路径的picture文件夹中
# os.getcwd() 获取当前工作路径

# os.listdir():返回指定的文件夹包含的文件或文件夹的名字的列表。
for pic in os.listdir(path):  		
    rmbg.remove_background_from_img_file('%s\%s' %(path, pic))

removebg包:一键抠图&换证件照底色
Python教程:去除背景(附多种方式)
python代码的打包.exe与自定义安装

1.6、实战:UI自选择图片进行背景替换

在这里插入图片描述

from removebg import RemoveBg
import win32ui

dlg = win32ui.CreateFileDialog(1)           # 1表示打开文件对话框
dlg.SetOFNInitialDir('E:/图片')              # 设置打开文件对话框中的初始显示目录
dlg.DoModal()
filename = dlg.GetPathName()                # 获取选择的文件名称

rmbg = RemoveBg("kRSbRHJZePGWnEBfKeqFbtSz", "error.log")        # 引号内是你获取的API
rmbg.remove_background_from_img_file(filename)                  # 图片地址


方法二、基于backgroundremover的背景替换

2.1、backgroundremover介绍

BackgroundRemover是一个命令行工具,从图像和视频中删除背景。

github源代码:BackgroundRemover
在线使用:BackgroundRemover.app

在这里插入图片描述

2.2、环境配置

安装python - backgroundremover包:pip install backgroundremover

图像或视频的使用方式:通过命令行使用

2.2.1、Image命令行实现

Remove the background from a local file image:

backgroundremover -i "/path/to/image.jpeg" -o "output.png"

图像的高级用法
(1)Sometimes it is possible to achieve better results by turning on alpha matting.

backgroundremover -i "/path/to/image.jpeg" -a -ae 15 -o "output.png"

(2)change the model for diferent background removal methods between u2netp, u2net, or u2net_human_seg

backgroundremover -i "/path/to/image.jpeg" -m "u2net_human_seg" -o "output.png"
# 通过Pycharm调用
import os
os.system('backgroundremover -i "cg.jpg" -o "cg_output.jpg"')

2.2.2、Video命令行实现

(1)remove background from video and make transparent mov

backgroundremover -i "/path/to/video.mp4" -tv -o "output.mov"

(2)remove background from local video and overlay it over other video

backgroundremover -i "/path/to/video.mp4" -tov "/path/to/videtobeoverlayed.mp4" -o "output.mov"

(3)remove background from local video and overlay it over an image

backgroundremover -i "/path/to/video.mp4" -toi "/path/to/videtobeoverlayed.mp4" -o "output.mov"

(4)remove background from video and make transparent gif

backgroundremover -i "/path/to/video.mp4" -tg -o "output.gif"

(5)Make matte key file (green screen overlay).Make a matte file for premier

backgroundremover -i "/path/to/video.mp4" -mk -o "output.matte.mp4"

视频的高级用法
(1)Change the framerate of the video (default is set to 30)

backgroundremover -i "/path/to/video.mp4" -fr 30 -tv -o "output.mov"

(2)Set total number of frames of the video (default is set to -1, ie the remove background from full video)

backgroundremover -i "/path/to/video.mp4" -fl 150 -tv -o "output.mov"

(3)Change the gpu batch size of the video (default is set to 1)

backgroundremover -i "/path/to/video.mp4" -gb 4 -tv -o "output.mov"

(4)Change the number of workers working on video (default is set to 1)

backgroundremover -i "/path/to/video.mp4" -wn 4 -tv -o "output.mov"

(5)change the model for diferent background removal methods between u2netp, u2net, or u2net_human_seg and limit the frames to 150

backgroundremover -i "/path/to/video.mp4" -m "u2net_human_seg" -fl 150 -tv -o "output.mov"

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/376871.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

创建对象的方式和对属性的操作

javaScript支持多种编程范式,包括函数式编程和面向对象编程,javaScript的对象被设计成一组属性的无序集合,由key和value组成。 创建对象的两种方式 早期使用创建对象方式最多的是使用Object类,使用new关键字来创建一个对象&…

应用篇|网络安全知识培训考试,答题小程序操作指引

网络安全知识培训考试,答题小程序操作指引关于全民防诈反诈宣传或者网络安全知识学习,如何进行组织一场微信线上答题考试?可以在小程序“护网专题信息安全知识竞答”,先创建一个学习单位/小组,再邀请成员加入单位/小组…

如何构造个人 AI 策略:从 AI 绘画的演进与 ChatGPT 现状出发?

持续关注 AI 相关探索:https://github.com/phodal/ai-researchPS:就本文的结论而言,我相信你已经或多或少的有所体会了。也因此,本文更多的是展现一个思考的过程,而不是一个纯粹的结论。AIGC 是什么?它是指…

pyenv安装python虚拟环境

文章目录pyenv介绍准备工作安装pyenv设置虚拟环境pyenv介绍 pyenv是一个forked自ruby社区的简单、低调、遵循UNIX哲学的Python环境管理工具, 它可以轻松切换全局解释器版本, 同时结合vitualenv插件可以方便的管理对应的包源。 为什么我们需要pyenv呢 Python解释器版本混乱, 2…

怎么关闭win10自动更新?我们可以这么做!

Win10自动更新可以使系统保持最新状态,但也可能导致一些问题,例如占用大量网络流量,导致系统速度减慢等。如果你希望关闭win10自动更新,不要电脑自动更新,我们可以跟着这篇文章这么做! 操作环境&#xff1a…

测试行业干了5年,从只会点点点到了现在的测试开发,总算是证明了自己

测试不止是点点点 我感觉我是一个比较有发言权的人吧,我在测试行业摸爬滚打5年,以前经常听到开发对我说,天天的点点点有意思没? 和IT圈外的同学、朋友聊起自己的工作,往往一说自己是测试,无形中也会被大家…

Jmeter 连接 JDBC 报错Communications link failure解决办法(云服务器搭建了LNMP环境必看)

换jar包、加?useSSLfalse,3306加防火墙,都不能解决我的问题。最终我发现是我的LNMP环境导致 错误提示 Response message:java.sql.SQLException: Cannot create PoolableConnectionFactory (Communications link failureThe last packet sent successf…

【跨尺度学习:迭代残差:超分:泛锐化】

Pansharpening via Super-Resolution Iterative Residual Network With a Cross-Scale Learning Strategy (基于跨尺度学习策略的超分辨率迭代残差网络泛锐化) 全色锐化是利用高空间分辨率全色(HR PAN)图像恢复低空间分辨率多光…

Vue-Router 路由管理器

文章目录知识点前端路由的概念及作用Vue-Router 的安装Vue-Router 的基本使用知识点 前端路由的概念及作用Vue-Router 的安装Vue-Router 的基本使用 前端路由的概念及作用 需要大家注意的是,这里的路由可不是指我们日常生活中的路由器 😂 ,…

Allegro如何打开或者关闭DFA规则设置操作指导

Allegro如何打开或者关闭DFA规则设置操作指导 在用Allegro做PCB布局的时候,器件与器件之间的DFA规则可以避免器件出现装配问题。如下图 当DFA规则设置好之后,如何打开或者关闭规则,具体操作如下 点击Setup点击Constraints

华为OD机试题,用 Java 解【相同数字的积木游戏 1】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…

2023年“网络安全”赛项浙江省金华市选拔赛 任务书

2023年“网络安全”赛项浙江省金华市选拔赛 任务书 任务书 一、竞赛时间 共计3小时。 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段单兵模式系统渗透测试 任务一 Windows操作系统渗透测试 任务二 Linux操作系统渗透测试 任务三 网页渗透 任务四 Linux系统…

硬件工程师——门控开关的设计

假设自己是一个工程师,那么我们怎么介绍自己呢? 我们首先需要可以自己独立设计项目,需要每一个工程师在开始阶段可以独立做项目,从而提高薪水 那么我们怎么提高做项目的能力呢? 通过项目来积累经验,在短…

百亿数据,毫秒级返回查询优化

近年来公司业务迅猛发展,数据量爆炸式增长,随之而来的的是海量数据查询等带来的挑战,我们需要数据量在十亿,甚至百亿级别的规模时依然能以秒级甚至毫秒级的速度返回,这样的话显然离不开搜索引擎的帮助,在搜…

OpenHarmony的未来和如何做好一个开源社区

今天要分享的文章,可能更多只是作为一种观点。主要包括2个内容。OpenHarmony的未来和如何做好一个开源社区,好的,接下来开始今天的内容。 你对OpenHarmony的未来如何看待? OpenHarmony的未来看起来非常光明,因为它具…

把 ChatGPT 加入 Flutter 开发,会有怎样的体验?

前言 ChatGPT 最近一直都处于技术圈的讨论焦点。它除了可作为普通用户的日常 AI 助手,还可以帮助开发者加速开发进度。声网社区的一位开发者"小猿"就基于 ChatGPT 做了一场实验。仅 40 分钟就实现了一个互动直播 Demo。他是怎么做的呢?他将整个…

如何管理好仓库/库房?

仓库管理是企业管理中不可缺少的一部分,事关企业能否正常运行的关键之一,古人有云:“三军未动粮草先行”,一个企业仓库管理做不好,他的生产管理肯定也是做不好的,不是说生产管理人员的管理能力不具备&#…

跨设备文件传输工具横评

文章目录对比QQ微信SnapDropLocalSendIntelUnisonLANDropTailscaleAirDroidSendAnywhere参考文献对比 传输速度测试条件大致相同,文件大小约为 100 MB 工具优点缺点传输速度备注QQ支持断点续传不要求同一局域网需要安装1.81 MB/s微信方便需要安装不支持大文件传完还…

ESP32设备驱动-ML8511紫外线传感器驱动

ML8511紫外线传感器驱动 1、ML8511介绍 ML8511 是一款紫外线传感器,适用于室内或室外获取紫外线强度。 ML8511 配备了一个内部放大器,可根据紫外线强度将光电流转换为电压。 这种独特的功能提供了与 ADC 等外部电路的简单接口。 在掉电模式下,典型的待机电流为 0.1 μ \mu…

认识 ECharts

文章目录前言知识点什么是 ECharts获取 ECharts 的方式从 CDN 获取ECharts 初体验前言 ECharts 是一个使用 JavaScript 实现的开源可视化库。它可以在 PC 端和移动设备上运行,目前兼容的浏览器有 IE8/9/10/11,Chrome,Firefox,Safa…