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设置windows桌面壁纸的实现代码
Jan 28 Python
Python的collections模块中namedtuple结构使用示例
Jul 07 Python
python用pickle模块实现“增删改查”的简易功能
Jun 07 Python
Python实现打砖块小游戏代码实例
May 18 Python
简单了解python代码优化小技巧
Jul 08 Python
python 爬取学信网登录页面的例子
Aug 13 Python
为什么说Python可以实现所有的算法
Oct 04 Python
django实现用户注册实例讲解
Oct 30 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
Feb 21 Python
深入了解Python 方法之类方法 &amp; 静态方法
Aug 17 Python
python自动化八大定位元素讲解
Jul 09 Python
Python数据结构之队列详解
Mar 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
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
2009/09/30 PHP
php实现Linux服务器木马排查及加固功能
2014/12/29 PHP
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
location.search在客户端获取Url参数的方法
2010/06/08 Javascript
Js setInterval与setTimeout(定时执行与循环执行)的代码(可以传入参数)
2010/06/11 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
用JS动态设置CSS样式常见方法小结(推荐)
2016/11/10 Javascript
js实现页面刷新滚动条位置不变
2016/11/27 Javascript
详解node.js平台下Express的session与cookie模块包的配置
2017/04/26 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
2017/12/21 Javascript
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
2017/12/27 Javascript
vue用递归组件写树形控件的实例代码
2018/07/19 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
vue中组件通信的八种方式(值得收藏!)
2019/08/09 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
2020/03/03 Javascript
Antd中单个DatePicker限定时间输入范围操作
2020/10/29 Javascript
理解Python中的绝对路径和相对路径
2017/08/30 Python
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
django与小程序实现登录验证功能的示例代码
2019/02/19 Python
Python和Java的语法对比分析语法简洁上python的确完美胜出
2019/05/10 Python
python实现屏保程序(适用于背单词)
2019/07/30 Python
python psutil模块使用方法解析
2019/08/01 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
python利用文件时间批量重命名照片和视频
2021/02/09 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
GoDaddy英国:全球排名第一的域名注册商
2018/06/08 全球购物
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
漫威玩具服装及周边商品官方购物网站:Marvel Shop
2019/05/11 全球购物
服务员岗位职责
2014/01/29 职场文书
团支书竞选演讲稿
2014/04/28 职场文书
怀念母亲教学反思
2014/04/28 职场文书
产品包装策划方案
2014/05/18 职场文书
三八红旗手先进事迹材料(2016推荐版)
2016/02/25 职场文书