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实现随机生成有效手机号码及身份证功能示例
Jun 05 Python
Python简单计算数组元素平均值的方法示例
Dec 26 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
Jan 09 Python
python字典快速保存于读取的方法
Mar 23 Python
python处理csv中的空值方法
Jun 22 Python
计算机二级python学习教程(2) python语言基本语法元素
May 16 Python
TensorFlow绘制loss/accuracy曲线的实例
Jan 21 Python
Python列表解析操作实例总结
Feb 26 Python
python实现贪吃蛇游戏源码
Mar 21 Python
Python模拟伯努利试验和二项分布代码实例
May 27 Python
python基础学习之生成器与文件系统知识总结
May 25 Python
Python 循环读取数据内存不足的解决方案
May 25 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
将博客园(cnblogs.com)数据导入到wordpress的代码
2013/01/06 PHP
php获取错误信息的方法
2015/07/17 PHP
PHP数组实际占用内存大小原理解析
2020/12/11 PHP
javascript模仿msgbox提示效果代码
2008/06/10 Javascript
JavaScript 设计模式学习 Factory
2009/07/29 Javascript
JavaScript Distilled 基础知识与函数
2010/04/07 Javascript
jquery显示和隐藏div特效实例
2013/02/27 Javascript
js数组与字符串的相互转换方法
2014/07/09 Javascript
简介JavaScript中POSITIVE_INFINITY值的使用
2015/06/05 Javascript
JavaScript中用toString()方法返回时间为字符串
2015/06/12 Javascript
jquery实现图片放大镜功能
2015/11/23 Javascript
jquery 无限极下拉菜单的简单实例(精简浓缩版)
2016/05/31 Javascript
学习Angularjs分页指令
2016/07/01 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
[51:44]2018DOTA2亚洲邀请赛 4.3 突围赛 Optic vs iG 第二场
2018/04/04 DOTA
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
Python中实现结构相似的函数调用方法
2015/03/10 Python
Python简单实现子网掩码转换的方法
2016/04/13 Python
利用Tkinter和matplotlib两种方式画饼状图的实例
2017/11/06 Python
python识别文字(基于tesseract)代码实例
2019/08/24 Python
基于Numba提高python运行效率过程解析
2020/03/02 Python
在django admin详情表单显示中添加自定义控件的实现
2020/03/11 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
TripAdvisor日本:全球领先的旅游网站
2019/02/14 全球购物
你经历的项目中的SCM配置项主要有哪些?什么是配置项?
2013/11/04 面试题
文员自我评价怎么写
2013/09/19 职场文书
自考毕业生自我鉴定
2013/11/04 职场文书
大学自荐信
2013/12/12 职场文书
幼儿园教研活动总结
2014/04/30 职场文书
企业财务总监岗位职责
2015/04/03 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
拉贝日记观后感
2015/06/05 职场文书
Idea连接MySQL数据库出现中文乱码的问题
2021/04/14 MySQL
JavaScript中10个Reduce常用场景技巧
2022/06/21 Javascript