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中的特殊语法:filter、map、reduce、lambda介绍
Apr 14 Python
python将文本转换成图片输出的方法
Apr 28 Python
详解Python的Django框架中的Cookie相关处理
Jul 22 Python
深入浅出分析Python装饰器用法
Jul 28 Python
python实现人脸识别代码
Nov 08 Python
Django中间件实现拦截器的方法
Jun 01 Python
Python流程控制 if else实现解析
Sep 02 Python
python 项目目录结构设置
Feb 14 Python
Python pip配置国内源的方法
Feb 14 Python
python 使用递归实现打印一个数字的每一位示例
Feb 27 Python
matplotlib.pyplot.matshow 矩阵可视化实例
Jun 16 Python
python开发入门——列表生成式
Sep 03 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
全国FM电台频率大全 - 8 黑龙江省
2020/03/11 无线电
Protoss热键控制
2020/03/14 星际争霸
PHP和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
php对mongodb的扩展(初出茅庐)
2012/11/11 PHP
Prototype使用指南之enumerable.js
2007/01/10 Javascript
jquery $.fn $.fx是什么意思有什么用
2013/11/04 Javascript
浅析jQuery1.8的几个小变化
2013/12/10 Javascript
javascript实现继承的简单实例
2015/07/26 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
微信小程序 限制1M的瘦身技巧与方法详解
2017/01/06 Javascript
canvas绘制环形进度条
2017/02/23 Javascript
bootstrap table 多选框分页保留示例代码
2017/03/08 Javascript
详解create-react-app 2.0版本如何启用装饰器语法
2018/10/23 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
2019/09/01 Javascript
javascript sort()对数组中的元素进行排序详解
2019/10/13 Javascript
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
[47:52]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第二场 11.26
2020/11/30 DOTA
Python中的map()函数和reduce()函数的用法
2015/04/27 Python
python django 实现验证码的功能实例代码
2017/05/18 Python
python3 enum模块的应用实例详解
2019/08/12 Python
Python实现微信机器人的方法
2019/09/06 Python
Python range、enumerate和zip函数用法详解
2019/09/11 Python
Python Pickle 实现在同一个文件中序列化多个对象
2019/12/30 Python
Python多线程的退出控制实现
2020/08/10 Python
html5画布旋转效果示例
2014/01/27 HTML / CSS
HTML5+lufylegend实现游戏中的卷轴
2016/02/29 HTML / CSS
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
SEPHORA新西兰官方网站:购买化妆品和护肤品
2016/12/02 全球购物
Agoda台湾官网:国内外订房2折起
2018/03/20 全球购物
德国滑雪和户外用品网上商店:XSPO
2019/10/30 全球购物
实习鉴定评语
2014/01/19 职场文书
小学教师师德感言
2014/02/10 职场文书
《桃花心木》教学反思
2014/02/17 职场文书
党员违纪检讨书怎么写
2014/11/01 职场文书
门卫管理制度范本
2015/08/05 职场文书
导游词之千岛湖
2019/09/23 职场文书