Python+PIL实现支付宝AR红包


Posted in Python onFebruary 09, 2018

本文实例为大家分享了Python+PIL处理支付宝AR红包的具体代码,供大家参考,具体内容如下

思路比较简单:

1、对图片进行锐化处理;
2、设(r_h, g_h, b_h)为支付宝遮罩黑条的RGB值,以此为中心,查找半径为Diff_radius的范围内所有的色值;

Python+PIL实现支付宝AR红包

3、对每一行符合步骤2的像素点个数进行计数,若该数值超过某个临界值(如:图片宽度的一半),将其所在行替换为上一行非遮罩数据;
4、对处理后的图片高斯滤镜。

以下是python代码:

from PIL import Image,ImageFilter
 
Diff_radius = 500
diff_min = 1
r_h, g_h, b_h = 43, 55, 66
 
image = Image.open('test.png')
image_width = image.size[0]
image_height = image.size[1]
rgb_im = image.convert('RGB')
 
img_sharpen = image.filter(ImageFilter.SHARPEN)
 
img_new = Image.new('RGBA', image.size, (255,255,255,255))
img_copy = img_sharpen.crop((0,0,image_width,image_height))
img_new.paste(img_copy, (0,0,image_width,image_height))
 
y_tmp = 0
 
for y in range(image_height):
  y_is_black = 0
  current_line_flag_acc = 0
  for x in range(image_width):
    r, g, b = rgb_im.getpixel((x, y))
    if ((r_h-r)**2 + (g_h-g)**2 + (b_h-b)**2) < Diff_radius :
      current_line_flag_acc = current_line_flag_acc + 1
      if (x == image_width - 1) and (current_line_flag_acc > diff_min) :
        y_is_black = 1
        img1 = img_new.crop((0,y_tmp-2,image_width,y_tmp-1))
        img_new.paste(img1, (0,y,image_width,y+1))
        # print('y_tmp:%d -> y:%d'%(y_tmp,y))
    elif (x == image_width - 1) and not y_is_black:
      y_tmp = y
# img_save = img_new.filter(ImageFilter.GaussianBlur(radius=1.5))
img_new.save('test_1.png')
print("done!")

对于不同的图片,可能需要修改3、4、5行的参数。

目前测试过几组照片,发现给出的线索图片越复杂,这种方法处理后能被识别的成功率越高,尤其是对人脸,简单的处理后基本都可以识别。

识别成功的:

Python+PIL实现支付宝AR红包

Python+PIL实现支付宝AR红包

识别失败的:

Python+PIL实现支付宝AR红包

以上内容仅用作学习,起到抛砖引玉的作用,请不要用作其他用途。我只是个python和PIL的初学者。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python3.0 字典key排序
Dec 24 Python
Ubuntu下创建虚拟独立的Python环境全过程
Feb 10 Python
Python简单实现的代理服务器端口映射功能示例
Apr 08 Python
Python 从相对路径下import的方法
Dec 04 Python
python中如何使用分步式进程计算详解
Mar 22 Python
Python with语句和过程抽取思想
Dec 23 Python
python集成开发环境配置(pycharm)
Feb 14 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
Mar 08 Python
python三引号如何输入
Jul 06 Python
PyCharm最新激活码PyCharm2020.2.3有效
Nov 18 Python
python IP地址转整数
Nov 20 Python
Python 实现12306登录功能实例代码
Feb 09 #Python
Python多层装饰器用法实例分析
Feb 09 #Python
理论讲解python多进程并发编程
Feb 09 #Python
Python装饰器(decorator)定义与用法详解
Feb 09 #Python
详解python的ORM中Pony用法
Feb 09 #Python
python监控键盘输入实例代码
Feb 09 #Python
Python with语句上下文管理器两种实现方法分析
Feb 09 #Python
You might like
PHP遍历并打印指定目录下所有文件实例
2014/02/10 PHP
ThinkPHP3.1的Widget新用法
2014/06/19 PHP
JavaScript实现禁止后退的方法
2006/12/27 Javascript
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
jQuery使用动态渲染表单功能完成ajax文件下载
2013/01/15 Javascript
浏览器兼容console对象的简要解决方案分享
2013/10/24 Javascript
javascript在myeclipse中报错的解决方法
2013/10/29 Javascript
JS模拟bootstrap下拉菜单效果实例
2016/06/17 Javascript
javascript常用经典算法详解
2017/01/11 Javascript
AngularJS动态绑定ng-options的ng-model实例代码
2017/06/21 Javascript
JavaScript实现的原生态兼容IE6可调可控滚动文字功能详解
2017/09/19 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
JavaScript Tab菜单实现过程解析
2020/05/13 Javascript
详解Vue数据驱动原理
2020/11/17 Javascript
[56:21]LGD vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
[01:06]欢迎来到上海,TI9
2018/08/26 DOTA
[01:38]女王驾到——至宝魔廷新尊技能&特效展示
2020/06/16 DOTA
[46:44]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第二场 3月7日
2021/03/11 DOTA
python爬虫获取京东手机图片的图文教程
2017/12/29 Python
python SSH模块登录,远程机执行shell命令实例解析
2018/01/12 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
python lxml中etree的简单应用
2019/05/10 Python
Python比较配置文件的方法实例详解
2019/06/06 Python
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
公务员转正鉴定材料
2014/02/11 职场文书
公司晚会主持词
2014/03/22 职场文书
公司领导班子对照检查存在问题整改措施
2014/10/02 职场文书
2015初中政治教学工作总结
2015/07/21 职场文书
青年教师听课心得体会
2016/01/15 职场文书
小米11和iphone12哪个值得买?小米11对比iphone12评测
2021/04/21 数码科技
【海涛教你打DOTA】黑鸟第一视角解说
2022/04/01 DOTA
Python作用域和名称空间的详细介绍
2022/04/13 Python
Python测试框架pytest高阶用法全面详解
2022/06/01 Python