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 23 Python
Python下的Mysql模块MySQLdb安装详解
Apr 09 Python
python实现简单的TCP代理服务器
Oct 08 Python
Python中利用函数装饰器实现备忘功能
Mar 30 Python
收藏整理的一些Python常用方法和技巧
May 18 Python
Python的Django框架中的Context使用
Jul 15 Python
Python遍历某目录下的所有文件夹与文件路径
Mar 15 Python
python主线程捕获子线程的方法
Jun 17 Python
详解Python3的TFTP文件传输
Jun 26 Python
Python基于datetime或time模块分别获取当前时间戳的方法实例
Feb 19 Python
详解解决Python memory error的问题(四种解决方案)
Aug 08 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
Mar 08 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的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
解析csv数据导入mysql的方法
2013/07/01 PHP
django中的ajax组件教程详解
2018/10/18 PHP
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
浅谈checkbox的一些操作(实战经验)
2013/11/20 Javascript
使用jQueryMobile实现滑动翻页效果的方法
2015/02/04 Javascript
jQuery代码实现发展历程时间轴特效
2015/07/30 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
关于Mac下安装nodejs、npm和cnpm的教程
2018/04/11 NodeJs
详解webpack-dev-server使用方法
2018/09/14 Javascript
three.js实现圆柱体
2018/12/30 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
2019/04/10 Javascript
JS正则表达式验证端口范围(0-65535)
2020/01/06 Javascript
详解搭建一个vue-cli的移动端H5开发模板
2020/01/17 Javascript
[01:32]2014DOTA2西雅图邀请赛 CIS我们有信心进入正赛
2014/07/08 DOTA
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
2017/08/18 Python
python3使用QQ邮箱发送邮件
2020/05/20 Python
使用python3构建文件传输的方法
2019/02/13 Python
对PyQt5中树结构的实现方法详解
2019/06/17 Python
Python 元组操作总结
2019/09/18 Python
python-OpenCV 实现将数组转换成灰度图和彩图
2020/01/09 Python
python微信公众号开发简单流程实现
2020/03/09 Python
Python telnet登陆功能实现代码
2020/04/16 Python
Python绘制动态水球图过程详解
2020/06/03 Python
如何通过python计算圆周率PI
2020/11/11 Python
美体小铺波兰官方网站:The Body Shop波兰
2019/09/03 全球购物
初中生个人学习的自我评价
2013/12/04 职场文书
大学军训感言600字
2014/02/25 职场文书
2015毕业生简历自我评价
2015/03/02 职场文书
2015年评职称工作总结范文
2015/04/20 职场文书
教你怎么用Python实现多路径迷宫
2021/04/29 Python
vue-cli3.x配置全局的scss的时候报错问题及解决
2022/04/30 Vue.js