有一天,群里面有一个群员发来一个图片,图片上面有支付宝红包的密码,于是我就想能不能做成类似于抢QQ红包一样的东西,经过几天的实践,思路如下:

1.      监听QQ群或者微信群里的图片红包消息(使用AccessibilityService)

2.      手动点击图片进入查看图片详情,AccessibilityService里面处理把图片剪切成只有密码文字的图片的动作

3.      对剪切后的图片进行去燥处理(本文重点)

4.      使用google开源框架Tesseract-OCR进行常见样本训练,把自己要用到的词都训练进去

(我在win7上使用到的软件tesseract.exe和jTessBoxEditorFX)

5.      把训练出来的结果(名字如chi_sim.traineddata)放到android项目中的Tesseract-OCR指定目录(一般为sd卡/tesseract)

6.      使用Tesseract-OCR开源框架进行步骤3图片的识别

7.      识别成功后调用支付宝软件,点开红包界面,把步骤6的识别出来的密码文字,粘贴到密码框中,点击确定(这个可以手动做,因为识别的密码有可能部分错误)

本篇重点介绍对剪切后的图片进行去燥处理步骤:

1.      找到一个支付宝保存的图片

2.      把他的密码通过android剪切功能弄出来(网上很多办法),如图

3.      对它进行线性灰度变化,代码如下

public Bitmap lineGrey(Bitmap image)

{

//得到图像的宽度和长度

int width = image.getWidth();

int height = image.getHeight();

//创建线性拉升灰度图像

Bitmap linegray = null;

linegray =image.copy(Bitmap.Config.ARGB_8888, true);

//依次循环对图像的像素进行处理

for (int i = 0; i < width; i++) {

for (int j = 0; j < height; j++){

//得到每点的像素值

int col = image.getPixel(i, j);

int alpha = col & 0xFF000000;

int red = (col &0x00FF0000) >> 16;

int green = (col &0x0000FF00) >> 8;

int blue = (col &0x000000FF);

// 增加了图像的亮度

red = (int) (1.1 * red + 30);

green = (int) (1.1 * green +30);

blue = (int) (1.1 * blue + 30);

//对图像像素越界进行处理

if (red >= 255)

{

red = 255;

}

if (green >= 255) {

green = 255;

}

if (blue >= 255) {

blue = 255;

}

// 新的ARGB

int newColor = alpha | (red<< 16) | (green << 8) | blue;

//设置新图像的RGB值

linegray.setPixel(i, j,newColor);

}

}

return linegray;

}

效果如下

4.      把上面步骤处理好的图片进行二值化处理,代码如下

// 该函数实现对图像进行二值化处理

public Bitmap gray2Binary(Bitmap graymap) {

//得到图形的宽度和长度

int width = graymap.getWidth();

int height = graymap.getHeight();

//创建二值化图像

Bitmap binarymap = null;

binarymap =graymap.copy(Bitmap.Config.ARGB_8888, true);

//依次循环,对图像的像素进行处理

for (int i = 0; i < width; i++) {

for (int j = 0; j < height; j++){

//得到当前像素的值

int col = binarymap.getPixel(i,j);

//得到alpha通道的值

int alpha = col &0xFF000000;

//得到图像的像素RGB的值

int red = (col & 0x00FF0000) >>16;

int green = (col &0x0000FF00) >> 8;

int blue = (col &0x000000FF);

// 用公式X = 0.3×R+0.59×G+0.11×B计算出X代替原来的RGB

int gray = (int) ((float) red *0.3 + (float) green * 0.59 + (float) blue * 0.11);

//对图像进行二值化处理

if (gray <= 246) {

gray = 0;

} else {

gray = 255;

}

// 新的ARGB

int newColor = alpha | (gray<< 16) | (gray << 8) | gray;

//设置新图像的当前像素值

binarymap.setPixel(i, j,newColor);

}

}

return binarymap;

}

效果如下:

哈哈,看到了吧,这样清楚,这样明显的支付宝口令密码,使用Tesseract-OCR是不是更容易,更简单,更准确!因为这个源码已经在上面贴上了,如果还有亲,需要源码的话,可以留言,我根据大家的意见上传demo!

安卓支付宝红包密码的图片的处理实践_图文相关推荐

  1. 如果要用运营的姿势,发支付宝红包

    作者:柳不浪 全文共 4365 字 1 图,阅读需要 10 分钟 ---- / BEGIN / ---- 本文仅从用户个体的角度,来聊聊至今不绝于微信群的吱口令红包. 邀请朋友领红包,当TA到店付款后 ...

  2. Android例子源码仿支付宝手势密码的功能实现

    本项目是一个仿支付宝手势密码部分的源码,项目在1280×720分辨率上显示有问题,在 854x480上没有问题,项目编码UTF-8默认编译版本4.4.2,实现思路: 1.要用一个类来表示这9个点中的第 ...

  3. python模拟春节集五福_用Python分析支付宝红包和2018年集五福活动,你准备好了吗?...

    想必各位对于支付宝"集五福"活动一定都有深入的了解,从2016年开始,中国网友们关于过年的记忆再次更新,除了看春晚,年夜饭以外,集"五福"突然成了一个全家参与的 ...

  4. Android一步一步剖析+实现仿支付宝手势密码自定义View

    最近项目需求:要求在项目中添加手势密码和指纹验证,恰巧最近在苦练自定义View,于是参考了网上轮子和自己的理解,实现了如下的效果. 国际惯例:Without pic you say a JB(奖杯). ...

  5. python发微信红包群二维码_小伙利用Python群发“支付宝”红包短信,一天赏金可达上千元...

    原标题:小伙利用Python群发"支付宝"红包短信,一天赏金可达上千元 注:以下教程仅供学习交流,娱乐而已,切勿用在非法途径 前言 最近朋友圈.微信群.QQ群里面全是什么扫码领取支 ...

  6. 支付宝红包主题怎么设置(图文教程)

    支付宝APP可以用于线下门店支付.还可以添加好友进行转账发红包等操作.默认的红包封面没有花色.如果觉得看起来单调.可以自己选择红包主题.在领取时还可以看到不同的图片页面.增添趣味性. 支付宝红包主题在 ...

  7. 如何获取支付宝红包参数?

    大家都知道,一直以来,微信都是禁止直接跳转支付宝的,这让很多人分享支付宝红包到微信,对方领取支付宝红包流程较为麻烦,今天,小编就教你一招可从微信直接跳转支付宝的教程. 教程如下: 1.首先打开支付宝, ...

  8. 解决微信小程序安卓手机访问不到图片,无法显示图片

    关于微信小程序不显示图片 通病可能有以下几个可能性: 非本地图片:确定图片资源存在,copy 图片url再浏览器打开,确定图片资源存在且能正常访问 本地图片:确定相对路径或者绝对路径正确 微信小程序图 ...

  9. 安卓获取手机视频和图片

    安卓获取手机视频和图片 获取手机本地视频 首先需要获得手机内存权限 在AndroidManifest.xml中添加代码,获得读取权限 android.permission.READ_EXTERNAL_ ...

最新文章

  1. 【转】Robot Framework 快速入门
  2. 一分钟学会看k线图_看K线图:阴跌如钝刀
  3. java连接本地oracle数据库_JAVA连接oracle数据库的三种方式
  4. 关于Dictionary字典和List列表
  5. 2010中国杭州电子信息博览会通讯报道
  6. CefSharp中c#和JavaScript交互读取电脑信息
  7. 判断条件要仔细推敲(记洛谷P1317题WA的经历,Java语言描述)
  8. 50-10-010-配置-整体配置
  9. 【FlexSim2019】自学笔记:一个实例看何为A连接?何为S连接?其意义的深入探讨
  10. Spring IOC的三种主要注入方式?
  11. 64位 centos 服务器 编译安装 gcc-4.6.2 和 codeviz
  12. 重写description方法
  13. java小游戏源码_分享几款java小游戏源码
  14. TextView跑马灯和editText抢占焦点,键盘弹不出来问题解决
  15. 64位系统安装SQL2000SP4详细教程[已测试WIN72008R2]
  16. 电脑每次开机都出现check file system on:C 的解决办法
  17. Android TV 焦点控制
  18. MMdetection2测试voc数据获取precision
  19. php数组键值对是什么意思_php数组中键值对怎么理解呢?
  20. Git(七)——删除历史版本,保留当前状态

热门文章

  1. 腾讯唯一时序数据库:CTSDB 解密
  2. 2022年高新企业申报 。
  3. AVL树关于不平衡旋转问题
  4. android studio profiler 内存分析用法
  5. 我所看到的韩国 -- 韩剧为什么要欺骗我们
  6. WebOffice浏览器兼容性设置
  7. JAVA 阶段测试题-SQL
  8. SpringBoot:Invalid character found in method name. HTTP method names must be tokens
  9. ssm电影院管理系统的设计与实现 毕业设计-附源码241505
  10. qrencode生成二维码\微信开源算法识别opencv-contrib(一)