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使用scrapy解析js示例
Jan 23 Python
windows下wxPython开发环境安装与配置方法
Jun 28 Python
Python基于PycURL实现POST的方法
Jul 25 Python
Python数据分析之如何利用pandas查询数据示例代码
Sep 01 Python
浅谈Python使用Bottle来提供一个简单的web服务
Dec 27 Python
python opencv之SIFT算法示例
Feb 24 Python
解决Python selenium get页面很慢时的问题
Jan 30 Python
利用Python校准本地时间的方法教程
Oct 31 Python
tensorflow多维张量计算实例
Feb 11 Python
基于Python爬虫采集天气网实时信息
Jun 05 Python
详解python程序中的多任务
Sep 16 Python
python和Appium的移动端多设备自动化测试框架
Apr 26 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下获取http状态的实现代码
2014/05/09 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
微信公众号开发之通过接口删除菜单
2017/02/20 PHP
laravel 实现根据字段不同值做不同查询
2019/10/23 PHP
URL编码转换,escape() encodeURI() encodeURIComponent()
2006/12/27 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
javascript使用window.open提示“已经计划系统关机”的原因
2014/08/15 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
由ReactJS的Hello world说开来
2015/07/02 Javascript
Javascript使用post方法提交数据实例
2015/08/03 Javascript
JS实现简易刻度时钟示例代码
2017/03/11 Javascript
BootStrap Table复选框默认选中功能的实现代码(从数据库获取到对应的状态进行判断是否为选中状态)
2017/07/11 Javascript
react开发教程之React 组件之间的通信方式
2017/08/12 Javascript
vue学习笔记之v-if和v-show的区别
2017/09/20 Javascript
详解HTML5 使用video标签实现选择摄像头功能
2017/10/25 Javascript
Vue.directive 自定义指令的问题小结
2018/03/04 Javascript
js捆绑TypeScript声明文件的方法教程
2018/04/13 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
详谈js的变量提升以及使用方法
2018/10/06 Javascript
ES6基础之 Promise 对象用法实例详解
2019/08/22 Javascript
[01:48]完美圣典齐天大圣至宝宣传片
2016/12/17 DOTA
python使用urllib模块开发的多线程豆瓣小站mp3下载器
2014/01/16 Python
Python 将RGB图像转换为Pytho灰度图像的实例
2017/11/14 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
请解释流与文件有什么不同
2016/07/29 面试题
专业毕业生个性的自我评价
2013/10/03 职场文书
工程资料员岗位职责
2014/03/10 职场文书
小学数学课后反思
2014/04/23 职场文书
优秀家长事迹材料
2014/05/17 职场文书
学习心理学的体会
2014/11/07 职场文书
怀孕辞职信怎么写
2015/02/28 职场文书
大学生求职自荐信
2015/03/24 职场文书
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL
SpringBoot整合Redis入门之缓存数据的方法
2021/11/17 Redis