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下操作word的方法
Apr 28 Python
Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
Jan 11 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
解决python中导入win32com.client出错的问题
Jul 26 Python
python 图像的离散傅立叶变换实例
Jan 02 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
Mar 28 Python
解决Jupyter无法导入已安装的 module问题
Apr 17 Python
解决keras使用cov1D函数的输入问题
Jun 29 Python
Python中logging日志记录到文件及自动分割的操作代码
Aug 05 Python
python切片作为占位符使用实例讲解
Feb 17 Python
Python实现学生管理系统(面向对象版)
Jun 24 Python
教你用python实现12306余票查询
Jun 30 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 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
用PHP实现的四则运算表达式计算实现代码
2011/08/02 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
php随机显示图片的简单示例
2014/02/15 PHP
javascript动画之圆形运动,环绕鼠标运动作小球
2010/07/20 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
2014/01/11 Javascript
JS中的构造函数详细解析
2014/03/10 Javascript
jquery实现垂直和水平菜单导航栏
2020/08/27 Javascript
基于js实现二级下拉联动
2016/12/17 Javascript
JS表单验证方法实例小结【电话、身份证号、Email、中文、特殊字符、身份证号等】
2017/02/14 Javascript
JS仿Base.js实现的继承示例
2017/04/07 Javascript
node.js连接MongoDB数据库的2种方法教程
2017/05/17 Javascript
JS实现运动缓冲效果的封装函数示例
2018/02/18 Javascript
vue init webpack myproject构建项目 ip不能访问的解决方法
2018/03/20 Javascript
jQuery实现新闻播报滚动及淡入淡出效果示例
2018/03/23 jQuery
Vue cli3 库模式搭建组件库并发布到 npm的流程
2018/10/12 Javascript
在webstorm开发微信小程序之使用阿里自定义字体图标的方法
2018/11/15 Javascript
Angular PWA使用的Demo示例
2019/01/31 Javascript
Vue实现回到顶部和底部动画效果
2019/07/31 Javascript
微信小程序防止多次点击跳转(函数节流)
2019/09/19 Javascript
Vue实现剪贴板复制功能
2019/12/31 Javascript
Vue数组响应式操作及高阶函数使用代码详解
2020/08/01 Javascript
全面了解Python环境配置及项目建立
2016/06/30 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
2017/11/29 Python
Python科学画图代码分享
2017/11/29 Python
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
django模板加载静态文件的方法步骤
2019/03/01 Python
python定义类self用法实例解析
2020/01/22 Python
随机分配座位,共50个学生,使学号相邻的同学座位不能相邻
2014/01/18 面试题
毕业设计计划书
2014/01/09 职场文书
会计电算化应届生自荐信
2014/02/25 职场文书
会计人员岗位职责
2015/02/03 职场文书
国家助学贷款承诺书
2015/04/30 职场文书
2019大学竞选班长发言稿
2019/06/27 职场文书
在项目中使用redis做缓存的一些思路
2021/09/14 Redis