昨天更新了一个去黑色背景的文章,今天发现可以再适用范围上推广一下,前提是知道背景色的RGB值。

Python对带光晕的图像进行去黑底黑色背景操作(附源码)

先上效果图

除了纯白会导致透明度异常,纯红导致光晕颜色改变和范围减小(原图接近红色),其他效果都很好。这里重新描述下问题,目标函数比较复杂就不写出来了。

这个问题我暂时找不到解析方法,但是通过观察目标函数的单调性,在部分情况下找到一组效果比较好的解,对于明度比较低的背景、明度比较高的图案适用性较好

话不多说,源码奉上

import numpy as np
from PIL import Image
import osdef RemoveBackground(input_path:str,file_name:str,output_path:str,BG_color:np.array=np.array([0,0,0])):#print(BG_color)target_im = Image.open(os.path.join(input_path,file_name))target_im = target_im.convert('RGBA')target_img_array = np.array(target_im)_BG_color = BG_color.reshape([-1,1,3])_BG_color = np.ones(target_img_array[:,:,:3].shape)*_BG_color#对背景色亮度高于前景色的区域进行反相pos = np.where(np.max((target_img_array[:,:,:3]-_BG_color),axis=2)<=0)_BG_color[pos] = 255 - _BG_color[pos]target_img_array[pos[0],pos[1],:3] = 255 - target_img_array[pos[0],pos[1],:3]#透明度target_img_Alpha = np.max((target_img_array[:,:,:3]-_BG_color)/(255+1e-7-_BG_color),axis=2)target_img_array[:,:,3] = target_img_Alpha*255target_img_Alpha = target_img_Alpha.reshape([target_img_array.shape[0],-1,1])target_img_array[:,:,:3] = np.minimum(_BG_color + (target_img_array[:,:,:3]-_BG_color)/target_img_Alpha,255)#恢复反相target_img_array[pos[0],pos[1],:3] = 255 - target_img_array[pos[0],pos[1],:3]res_img = Image.fromarray(target_img_array)#res_img.show()if not file_name.endswith(".png"):res_img.save(os.path.join(output_path,file_name[:-4]+".png"))else:res_img.save(os.path.join(output_path,file_name))

Python对带光晕的任意纯色背景图像进行去背景色操作(保留透明效果、附源码)相关推荐

  1. python量化策略源码_【Python量化投资】趋向系统指标策略 ADX、DMI指标用于股票池(附源码)...

    原标题:[Python量化投资]趋向系统指标策略 ADX.DMI指标用于股票池(附源码) [什么是ADX] ADX(average directional indicator) 平均趋向指数,常用的趋 ...

  2. python模拟火车订票系统代码_Python3.6实现12306火车票自动抢票,附源码

    原标题:Python3.6实现12306火车票自动抢票,附源码 Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已 ...

  3. 以canvas为动态网页背景,添加的标签内容不显示(附源码-----动态背景星空)

    问题描述: 我在网上下载了一个动态网页背景--星空,然后本地能运行,但是当我添加其他组件的时候,发现组件不显示,然后只能显示动态背景.仔细看了一下代码,发现这个动态背景是依靠canvas标签来实现的. ...

  4. 【Python游戏】Python实现一个植物大战僵尸小游戏,非常简单,可以用于做毕业设计哟 | 附源码

    前言 halo,包子们上午好 今天给打击整一个植物大战僵尸 无广告版本 哈哈 说实话,现在的小游戏很多都是有广告,多少有点难受 今天给大家直接安排 相关文件 关注小编,私信小编领取哟! 当然别忘了一件 ...

  5. 我用Python逆向登录世界上最大的游戏平台,steam加密手段有多高明【内附源码】

    大家好,我是辣条. 前言 今天带来爬虫实战的第30篇文章.在挑选游戏的过程中感受学习,让你突飞猛进.python爬虫实战:steam逆向RSA登录解析. 采集目标 网址:steam 工具准备 开发工具 ...

  6. Python图像识别实战(一):实现按数量随机抽取图像复制到另一文件夹(附源码和实现效果)

    前面我介绍了可视化的一些方法以及机器学习在预测方面的应用,分为分类问题(预测值是离散型)和回归问题(预测值是连续型)(具体见之前的文章). 从本期开始,我将做一个关于图像识别的系列文章,让读者慢慢理解 ...

  7. Python嘎嘎涨知识的7个小游戏,玩过的都爱不释手(附源码,直接运行就可)

    前言 今天星期七,是一个快乐的日子.上班族不用上班,学生不用学习.我也不想分享太多的知识去为难大家,就给大家七个小游戏 吧,从周一玩到周日的那种,学会了记得来找我PK- 1.消消乐 玩法:三个相连就能 ...

  8. 如何利用python抖音涨粉代码_Python实现抖音关键词热度搜索小程序(附源码)

    原博文 2020-06-03 19:03 − 今天给大家带来一个抖音热词小程序,废话不多说,直接上代码 import requests import json import urllib.parse ...

  9. 15行Python代码能干嘛?能写一个抖音网页版的简易爬虫(附源码)

    前言 随着互联网时代的到来,人们更加倾向于互联网购物,某宝又是电商行业的巨头,在某宝平台中有很多商家数据,今天带大家使用python+selenium工具获取这些公开的商家数据 环境介绍: pytho ...

最新文章

  1. 一般熟练盲打需要多久_进口攻略!一般货物进口清关需要多久?如何有效提高清关效率?...
  2. HBase表结构设计(结构、创建、压缩、分区、命名空间等)
  3. pypinyin 获取多音字的拼音组合
  4. Windows下如何查看某个端口被谁占用并强制关闭
  5. 专题:数据自治开放(上)
  6. xercesimpl做什么用的_一体化泵站是用来做什么的有什么用
  7. 解决CentOS无法解析域名的问题
  8. 【避坑】初次接项目的血与泪,扎坑了老铁(二)
  9. 计算机等级考试数据库三级知识点吐血总结!!!
  10. linux arm sbus,嵌入式ARM系列linux2.4配置makefile完全注释(2)
  11. java安全体系:JCA、JCE、JSSE、JAAS
  12. CTF-安全杂项-BAT公司信息查询系统
  13. 汇编:动态画出一棵七彩圣诞树
  14. "Selenium + Firefox"如何使用带用户名密码认证的HTTP代理
  15. hanoi塔问题解析(一) c++实现
  16. java list 博客园_Java集合系列(一)List集合
  17. Coke Rejection Risks Big Spill
  18. 自媒体各大平台收益对比_各大自媒体平台收益对比,网易号低到无力吐槽,大鱼号最高...
  19. 低代码平台,企业服务新战场
  20. FOC无感驱动算法—BEMF磁链模型讨论

热门文章

  1. 匆匆那年,纪念我的2014
  2. 阿里内部最新 Java 面试解析(全彩版)开源!(分布式 / 中间件 / 高并发 / 设计模式全都有)
  3. Oracle数据库学习-Day3
  4. vue服务器端预渲染prerender-spa-plugin的实践
  5. 【华为OJ】【107-24点运算】
  6. spring 狂神说的详细笔记(完整版)
  7. (力扣C++)动态规划学习计划
  8. 20世纪美国最佳100部影片
  9. Kotlin学习笔记(一)
  10. 【智能物流】PPT干货,智能物流系统