仅供参考

  • 一、效果
  • 二、过程
    • 1.准备工作 - 截图 - 提取主色
    • 2.图片二值化
    • 3.文字识别
      • 1.注册账号-之前的文章里有
      • 2.获得API Key、Secret Key-之前的文章里有
      • 3.调用接口
      • 4.完整代码
  • 三、我的摸索过程
    • 1.二值化
    • 2.文字识别
  • 四、完整代码
  • 总结

一、效果

二、过程

1.准备工作 - 截图 - 提取主色

先手动截一张图片,然后通过在线网站https://palettegenerator.com/提取主色,如红色为#FD1111

2.图片二值化

有了主色后,通过autojs的 images.interval(img, “#C71718”, 70) 函数,将图片二值化

将图片二值化,在color-interval ~ color+interval范围以外的颜色都变成0,在范围以内的颜色都变成255。这里对color的加减是对每个通道而言的。

例如images.interval(img, “#888888”, 16),每个通道的颜色值均为0x88,加减16后的范围是[0x78, 0x98],因此这个代码将把#787878~#989898的颜色变成#FFFFFF,而把这个范围以外的变成#000000。

var img = images.read("/sdcard/Pictures/QQ/c.jpg");img=images.interval(img, "#FD1111", 120)// 60-90    //后边这个值自己可以改一下看看
images.save(img, "./邻域yyds.jpg", "jpg", 100);img.recycle();

3.文字识别

文字识别,我之前写过 python的百度智能云-文字识别
这里我们通过调用 百度OCR文字识别 接口 来进行文字识别。

官方文档:https://cloud.baidu.com/doc/OCR/s/Ek3h7xypm

1.注册账号-之前的文章里有

2.获得API Key、Secret Key-之前的文章里有

3.调用接口

https://cloud.baidu.com/doc/OCR/s/Ck3h7y2ia

请求格式 - POST方式调用

返回格式 - JSON格式

请求限制 - 请求图片需经过base64编码及urlencode后传入
请求格式支持:PNG、JPG、JPEG、BMP、TIFF、PNM、WebP
图片编码后大小限额:base64编码urlencode后大小不超过4M,最短边至少15px,最长边最大4096px

var img64 = images.toBase64(img, "png", 100); //图片经base64编码

调用方式一:请求URL数据格式

向API服务地址使用POST发送请求,必须在URL中带上参数:access_token

注意:access_token的有效期为30天,需要每30天进行定期更换;

参考“Access Token获取”
向授权服务地址https://aip.baidubce.com/oauth/2.0/token发送请求(推荐使用POST),并在URL中带上以下参数:
grant_type: 必须参数,固定为client_credentials;
client_id: 必须参数,应用的API Key;
client_secret: 必须参数,应用的Secret Key;

    var API_Key="输入自己的API_Key";var Secret_Key="输入自己的Secret_Key";//向授权服务地址发送请求var getTokenUrl="https://aip.baidubce.com/oauth/2.0/token";var token_Res = http.post(getTokenUrl, {grant_type: "client_credentials",client_id: API_Key,client_secret: Secret_Key,});var access_token=token_Res.body.json().access_token;

服务器返回的JSON文本参数如下:
access_token: 要获取的Access Token;
expires_in: Access Token的有效期(秒为单位,有效期30天);
其他参数忽略,暂时不用;

通用文字识别(高精度版) 为例
https://cloud.baidu.com/doc/OCR/s/1k3h7y3db

    var ocrUrl = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic";var ocr_Res = http.post(ocrUrl, {headers: {"Content-Type": "application/x-www-form-urlencoded"},access_token: access_token,   //之前获得的access_tokenimage: img64,        //和 url/pdf_file 三选一,img64是传入的图片});var json = ocr_Res.body.json();

必要参数headers、access_token、image,其他参数查看文档

4.完整代码

//百度智能云 文字识别OCR 接口调用
function Baidu_ocr(img){log("调用百度ocr:");/**** 将图片编码 ******/var img64 = images.toBase64(img, "png", 100);/**** 获取access_token ******/var API_Key="输入自己的API_Key";var Secret_Key="输入自己的Secret_Key";//向授权服务地址发送请求var getTokenUrl="https://aip.baidubce.com/oauth/2.0/token";var token_Res = http.post(getTokenUrl, {grant_type: "client_credentials",client_id: API_Key,client_secret: Secret_Key,});var access_token=token_Res.body.json().access_token;/**** 调用ocr ******///高精度文字识别var ocrUrl = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic";var ocr_Res = http.post(ocrUrl, {headers: {"Content-Type": "application/x-www-form-urlencoded"},access_token: access_token,   //之前获得的access_tokenimage: img64,        //和 url/pdf_file 三选一,img64是传入的图片});var json = ocr_Res.body.json();/**** 返回结果 ******/return json;
}

三、我的摸索过程

1.二值化

var img = images.read("/sdcard/Pictures/QQ/c.jpg");   //读取一张图片var c=[]   //将图片里的颜色值放入数组
var cc = 0 //记录颜色值数量
//获取在点(x, y)的颜色值
for(x=0;x<250;x++){for(y=0;y<20;y++){var color = images.pixel(img, x, y);//显示该颜色if(colors.toString(color) != "#ffffffff"){  //不是白色才保存log(x,y,colors.toString(color));c[cc] = colors.toString(color)cc=cc+1}}
} //灰度化
img1=images.grayscale(img)
images.save(img1, "./灰度化.jpg", "jpg", 100);
//将图片中大于20的值全部变成255,其余变成0
img2=images.threshold(img, 19, 255, "BINARY")//20!  25黑字会显 15红字不清晰
images.save(img2, "./阈值.jpg", "jpg", 100);
//把范围里的变白
img3=images.inRange(img, "#FD1111", "#FCBDBB")//fffffafa//ffffdddc
images.save(img3, "./范围.jpg", "jpg", 100);//若红字本身不清楚,后面的数 要调大,若背景没消干净,要调小/*img4=images.interval(img, "#FD1111", 95)// 黑字显
images.save(img4, "./4.jpg", "jpg", 100); */img4=images.interval(img, "#FD1111", 120)//
images.save(img4, "./邻域yyds.jpg", "jpg", 100);/* img4=images.interval(img, "#FD1111", 135)//红字不清晰
images.save(img4, "./6.jpg", "jpg", 100); */img.recycle();//回收图片,截屏的不需要

我对这个颜色的RGB,十六进制,灰度值其实也不是很了解,以上结果都是我一点点摸索出来的,不大具有普适性,借鉴一下就行

2.文字识别

根据文档一步步来

1.将图片编码
2.获取access_token
3.获取识别结果

虽然代码很多,但其实很容易看懂,要传的参数,返回的参数,文档中写的都很清晰

四、完整代码

var img = images.read("/sdcard/Pictures/QQ/c.jpg");   //自己改成截图
log("读取图片")img=images.interval(img, "#FD1111", 120)//C11719.70!! 60-90
images.save(img, "./邻域yyds.jpg", "jpg", 100);
log("图片二值化")img.recycle();//回收图片,截屏不需要var res=Baidu_ocr(img4)//调用百度识图/*将识别结果拼接*/
words = ''
for(i=0;i<res.words_result_num;i++){words = words + res.words_result[i].words
}
log("识别结果:" + words)//百度智能云 文字识别OCR 接口调用
function Baidu_ocr(img){log("调用百度ocr:");/**** 将图片编码 ******/var img64 = images.toBase64(img, "jpg", 100);//转换截屏图片/**** 获取access_token ******/var API_Key="Oa3pVyYxbrPpUxAUwKFmnkQ0";var Secret_Key="h6nvjCpGDD3fUy3u6Qa3tS0yL6vSe7vq";//向授权服务地址发送请求var getTokenUrl="https://aip.baidubce.com/oauth/2.0/token";var token_Res = http.post(getTokenUrl, {grant_type: "client_credentials",client_id: API_Key,client_secret: Secret_Key,});var access_token=token_Res.body.json().access_token;/**** 调用ocr ******///高精度文字识别var ocrUrl = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic";var ocr_Res = http.post(ocrUrl, {headers: {"Content-Type": "application/x-www-form-urlencoded"},access_token: access_token,  //之前获得的access_tokenimage: img64,        //和 url/pdf_file 三选一,img64是传入的图片});var json = ocr_Res.body.json();/**** 返回结果 ******/return json;
}

总结

图片二值化使用的很不方便,最近准备csp有点忙,等考完试,再写一个根据边界截图的方法试试

autojs之提取text中的红色文字(图片二值化+百度智能云-文字识别OCR-接口调用)相关推荐

  1. Yhen手把手带你使用百度智能云②----文字识别

    声明: 以下内容为本人原创,仅供用于参考学习 禁止用于商业及违法用途 ·作者:@Yhen ·原文网站:CSDN ·原文链接:https://blog.csdn.net/Yhen1/article/de ...

  2. opencv中的threshold()函数(二值化)

    opencv官方解释如下: 参数: src:源图像,可以为8位的灰度图,也可以为32位的彩色图像.(两者由区别) dst:输出图像 thresh:阈值 maxval:dst图像中最大值 type:阈值 ...

  3. OpenCV+MFC学习笔记(二):OpenCV二值化处理图像并在Picture Control中并自适应显示

    在前面我们已经完成通过OpenCV读取图片在Picture Control中并自适应显示.下面我们很自然的需要对读取的图片进行处理,处理完之后很自然的想到要看看效果.所以今天的笔记是通过OpenCV灰 ...

  4. python提取微信聊天语音_GitHub - dennischancs/wechat-asr: 微信语音批量转文字 python编写 用百度智能云短语音识别API实现 windows下的使用...

    WeChat-ASR 微信语音批量转文字 调用百度智能云短语音识别API 目前仅支持安卓手机+Windows 简介 最近线上办公,很多小会议或者讲座等也在微信群里,有时需要记录保存会议讲话内容,也可能 ...

  5. 用Python提取图片中的文字——百度智能云API

    百度智能云有很多功能,直接接入接口就可以调用函数使用,这里我们使用简单的方式,直接调用,不适用OpenCV.TensorFlow啥的..毕竟我不是大佬... 安装库 首先安装Python库,使用pip ...

  6. 用FPGA实现视频中物体边缘二值化

    对于高速视频图像中的物体轮廓提取中,图像的二值化,采用软件方式,速度无法满足需要,因此要采用FPGA方案,这样可以实现二值化速度和帧率一样,完全和视频同步. 一.算法原理:  边缘二值化的算法很多,象 ...

  7. python:ocr图文识别(百度智能云API文字识别)

    文章目录 前言 一.创建账号和应用 二.具体步骤 1.第一种方式: 2.第二种方式 总结 前言 说道OCR图文识别,其实python也有在自己的库(以下是我了解,应该还有很多): 第一个 tesser ...

  8. python修改rgb红色通道为黑白_opencv-python 简单的RGB通道分别二值化(提取特定颜色)...

    本文借鉴了https://blog.csdn.net/sinat_40661696/article/details/80142217 这位老哥最后合并色彩时忽略了一个问题 cv中RGB的顺序是BGR ...

  9. 百度智能云实现文字转语音

    用tkinter写的界面,需要自己申请百度智能云的APP_ID.API_KEY .SECRET_KEY 效果图如下: 实现代码如下: import tkinter as tk import tkint ...

  10. matlab连通区边界_Matlab图像处理学习笔记(一):二值化、开操作、连通区域提取、重心、ROI...

    本博客主要记录我学习运用matlab进行一些基本的图像处理的一些笔记,如果有不当的地方,欢迎批评指正,一起学习,一起进步. 本篇是第一篇,只涉及到一些基本的操作,涉及到的知识点如下: 1.二值化 2. ...

最新文章

  1. (2)iOS用UICollectionView实现Gallery效果
  2. 美团分布式服务治理框架OCTO之二:Mesh化
  3. 为何大多数人做出来的图表只是一坨屎?
  4. 多层陶瓷电容器用处_【科普】片状多层陶瓷电容器的封装方法,你了解吗?
  5. ShowDoc的搭建
  6. MKNetwork网络请求过程中onCompletion调用两次的问题
  7. levelshifter工作原理_从滑块问题看Level Shifter中Latch的状态转换
  8. linux环境下软件包的安装
  9. java IO流详解及特性
  10. 直面不确定性 看致远互联如何帮助组织自生长
  11. 郑州大学计算机系好请假吗,郑州大学生最让人心碎的请假条:请假期限永远,无法按时返校!...
  12. 看懂logcat日志
  13. 小程序的3种副业方式,合适你来可以来
  14. 筛选状态下进行复制粘贴为数值
  15. MySQL8.0 通过data文件和SQL语句恢复数据库
  16. 学python能干嘛-学 Python 都用来干嘛的?
  17. 咸鱼的 GitHub 情报 | 20191229 期
  18. TM1638快速开发教程(基于正点原子mini板stm32f103rc)
  19. 江苏移动CM101s-MV100-EMMC- M8233_强刷固件包
  20. 好好学习,天天向上——“C”

热门文章

  1. MyBatis创建视图
  2. jupyter lab 导出笔记为pdf
  3. 使用java映射ipv4,ipv6到阿里DDNS,适用于黑白群晖或其他用途
  4. 快速批量改变图片格式
  5. linux镜像迅雷下载,【转】红帽 Red Hat Linux相关产品iso镜像下载【迅雷快传】【百度云】【更新7.1】...
  6. 关于破解Quartus
  7. excel两个表格数据对比_Excel中两个表格对比,找出不同数据
  8. 【R语言报错解决】—存在非数值型变量,Error in c_max * c_min : non-numeric argument to binary operator,如何在数据导入后转为数值型变量?
  9. immunedeconv估算免疫细胞比例
  10. dmx512 java_DMX512控制协议及其实现