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 相关文章推荐
跟老齐学Python之编写类之一创建实例
Oct 11 Python
Python基于pygame实现的弹力球效果(附源码)
Nov 11 Python
Python使用BeautifulSoup库解析HTML基本使用教程
Mar 31 Python
python3.5实现socket通讯示例(TCP)
Feb 07 Python
python3获取当前文件的上一级目录实例
Apr 26 Python
PyCharm 设置SciView工具窗口的方法
Jan 15 Python
Django框架中间件(Middleware)用法实例分析
May 24 Python
介绍一款python类型检查工具pyright(推荐)
Jul 03 Python
pandas分组聚合详解
Apr 10 Python
2021年pycharm的最新安装教程及基本使用图文详解
Apr 03 Python
PO模式在selenium自动化测试框架的优势
Mar 20 Python
使用opencv-python如何打开USB或者笔记本前置摄像头
Jun 21 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
Apache服务器无法使用的解决方法
2013/05/08 PHP
ThinkPHP like模糊查询,like多匹配查询,between查询,in查询,一般查询书写方法
2018/09/26 PHP
浅谈laravel orm 中的一对多关系 hasMany
2019/10/21 PHP
php7 list()、session及其他模块的修改实例分析
2020/05/25 PHP
PHP实现简单日历类编写
2020/08/28 PHP
javascript 日历提醒系统( 兼容所有浏览器 )
2009/04/07 Javascript
JS 非图片动态loading效果实现代码
2010/04/09 Javascript
可选择和输入的下拉列表框示例
2013/11/05 Javascript
Javascript setInterval的两种调用方法(实例讲解)
2013/11/29 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
简单学习vue指令directive
2016/11/03 Javascript
用原生js做单页应用
2017/01/17 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
2018/09/28 Javascript
[56:35]DOTA2上海特级锦标赛C组小组赛#1 OG VS Archon第二局
2016/02/27 DOTA
python递归打印某个目录的内容(实例讲解)
2017/08/30 Python
基于Python的文件类型和字符串详解
2017/12/21 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
新手如何发布Python项目开源包过程详解
2019/07/11 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
2020/01/10 Python
Django用户身份验证完成示例代码
2020/04/03 Python
jupyter notebook oepncv 显示一张图像的实现
2020/04/24 Python
python RSA加密的示例
2020/12/09 Python
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
Europcar西班牙:全球汽车租赁领域的领导者
2018/09/17 全球购物
北美最大的手工艺品零售商之一:Michaels Stores
2019/02/27 全球购物
美国婴儿用品及配件购买网站:Munchkin
2019/04/03 全球购物
顶碗少年教学反思
2014/02/21 职场文书
我的中国梦演讲稿初中篇
2014/08/19 职场文书
承诺函格式模板
2015/01/21 职场文书
施工安全责任协议书
2016/03/23 职场文书
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android