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中的闭包总结
Sep 18 Python
Python中使用Tkinter模块创建GUI程序实例
Jan 14 Python
python使用wmi模块获取windows下的系统信息 监控系统
Oct 27 Python
使用Python发送各种形式的邮件的方法汇总
Nov 09 Python
Django添加feeds功能的示例
Aug 07 Python
使用python的pexpect模块,实现远程免密登录的示例
Feb 14 Python
对python3.4 字符串转16进制的实例详解
Jun 12 Python
在Pycharm中使用GitHub的方法步骤
Jun 13 Python
Python中的 is 和 == 以及字符串驻留机制详解
Jun 28 Python
Python for i in range ()用法详解
Sep 18 Python
浅析Django中关于session的使用
Dec 30 Python
python设置环境变量的作用整理
Feb 17 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 伪造ip以及url来路信息方法汇总
2014/11/25 PHP
PHP可变变量学习小结
2015/11/29 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
浅析PHP7的多进程及实例源码
2019/04/14 PHP
PHP实现随机发放扑克牌
2020/04/21 PHP
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
javascript处理table表格的代码
2010/12/06 Javascript
使用jquery插件实现图片延迟加载技术详细说明
2011/03/12 Javascript
nodejs 后缀名判断限制代码
2011/03/31 NodeJs
jquery加载页面的方法(页面加载完成就执行)
2011/06/21 Javascript
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
DIV始终居中的js代码
2014/02/17 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
原生js更改css样式的两种方式
2017/03/15 Javascript
教你快速搭建Node.Js服务器的方法教程
2017/03/30 Javascript
Vue.js 中的 $watch使用方法
2017/05/25 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
Node.js静态服务器的实现方法
2018/02/28 Javascript
[02:39]DOTA2英雄基础教程 天怒法师
2013/11/29 DOTA
浅析Python的web.py框架中url的设定方法
2016/07/11 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
对pandas中两种数据类型Series和DataFrame的区别详解
2018/11/12 Python
Python版名片管理系统
2018/11/30 Python
Django REST framwork的权限验证实例
2020/04/02 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
python中查看.db文件中表格的名字及表格中的字段操作
2020/07/07 Python
Python的logging模块基本用法
2020/12/24 Python
Python爬取某平台短视频的方法
2021/02/08 Python
Clarins娇韵诗美国官网:法国天然护肤品牌
2016/09/26 全球购物
幼师专业毕业生自荐信
2013/09/29 职场文书
优秀党员获奖感言
2014/02/18 职场文书
优秀大学生自荐信
2015/03/26 职场文书
2016党校学习心得体会
2016/01/07 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript
Java 在线考试云平台的实现
2021/11/23 Java/Android