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实现树莓派WiFi断线自动重连的实例代码
Mar 16 Python
Python入门_浅谈逻辑判断与运算符
May 16 Python
python使用epoll实现服务端的方法
Oct 16 Python
Python os.rename() 重命名目录和文件的示例
Oct 25 Python
在pycharm上mongodb配置及可视化设置方法
Nov 30 Python
aws 通过boto3 python脚本打pach的实现方法
May 10 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
Jun 28 Python
使用Python项目生成所有依赖包的清单方式
Jul 13 Python
Django rest framework分页接口实现原理解析
Aug 21 Python
python中判断数字是否为质数的实例讲解
Dec 06 Python
python读写数据读写csv文件(pandas用法)
Dec 14 Python
10张动图学会python循环与递归问题
Feb 06 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中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
2011/11/26 PHP
用php随机生成福彩双色球号码的2种方法
2013/02/04 PHP
php批量删除cookie的简单实现方法
2015/01/26 PHP
php实现用于验证所有类型的信用卡类
2015/03/24 PHP
php提高网站效率的技巧
2015/09/29 PHP
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
开启Javascript中apply、call、bind的用法之旅模式
2015/10/28 Javascript
jQuery层次选择器用法示例
2016/09/09 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
如何制作幻灯片(代码分享)
2017/01/06 Javascript
Javascript blur与click冲突解决办法
2017/01/09 Javascript
js代码延迟一定时间后执行一个函数的实例
2017/02/15 Javascript
Vue.js父与子组件之间传参示例
2017/02/28 Javascript
Angular2.js实现表单验证详解
2017/06/23 Javascript
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
2017/08/29 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
2018/09/03 jQuery
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
JavaScript实现图片上传并预览并提交ajax
2019/09/30 Javascript
JavaScript实现飞舞的泡泡效果
2020/02/07 Javascript
微信小程序后端无法保持session的原因及解决办法问题
2020/03/20 Javascript
javaScript实现一个队列的方法
2020/07/14 Javascript
python通过pil为png图片填充上背景颜色的方法
2015/03/17 Python
python实现用户管理系统
2018/01/10 Python
将python依赖包打包成window下可执行文件bat方式
2019/12/26 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
python语言中有算法吗
2020/06/16 Python
解决Python中导入自己写的类,被划红线,但不影响执行的问题
2020/07/13 Python
Python绘制词云图之可视化神器pyecharts的方法
2021/02/23 Python
详解CSS3 用border写 空心三角箭头 (两种写法)
2017/09/29 HTML / CSS
纯css3实现的竖形无限级导航
2014/12/10 HTML / CSS
学子宴答谢词
2014/01/25 职场文书
民主生活会对照检查材料
2014/09/22 职场文书
2015公务员年度考核评语
2015/03/25 职场文书
初中重阳节活动总结
2015/05/05 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
导游词之上海杜莎夫人蜡像馆
2019/11/22 职场文书