java截取屏幕指定范围内的图片并识别图片内的文字
目录
目标
概述
代码
根据坐标截图
截图效果
识别图片上的文字
相关依赖与工具类
识别效果
目标
- 根据给定的坐标,在屏幕上截图并保存到指定的目录下;
- 识别图片中的文字。
概述
- 利用JDK自带的方法实现截图功能;
- 利用百度SDK实现文字识别功能。
代码
根据坐标截图
package com.ctx.utils;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;/*** @describe 截图工具类*/
public class Img {//图片存放目录public static final String BUFFER_IMAGE_AREA="C:\\Users\\Administrator\\Desktop\\sw_image\\";public static void main(String[] args) throws IOException, AWTException {//{左上角的横坐标,左上角的纵坐标,右下角的横坐标,右下角的纵坐标}int[] area={0,0,200,200};createScreen(area,"test.png");}/**** @param area 截图区域,即给定的截图范围:{左上角的横坐标,左上角的纵坐标,右下角的横坐标,右下角的纵坐标}* @param imageName 给截取的图片命名* @return* @throws AWTException* @throws IOException*/public static String createScreen(int[] area,String imageName)throws AWTException, IOException {Dimension screen = null; //电脑屏幕大小Rectangle screenRect = null;//截图的宽高BufferedImage image = null; //暂存图片的缓存Robot robot = null; //负责截屏的操作者screen = Toolkit.getDefaultToolkit().getScreenSize();//截图尺寸screen.height=area[3]-area[1];screen.width=area[2]-area[0];screenRect = new Rectangle(screen);//左上角得坐标screenRect.x=area[0];screenRect.y=area[1];robot = new Robot();//将得到的屏幕信息存放在缓存里面image = robot.createScreenCapture(screenRect);//将缓存里面的屏幕信息以图片的格式存在制定的磁盘位置ImageIO.write(image, getFileSuffix(imageName), new File(BUFFER_IMAGE_AREA, imageName));return BUFFER_IMAGE_AREA+imageName;}public static String getFileSuffix(String path){String[] split = path.split("\\.");return split[split.length-1];}
}
截图效果
识别图片上的文字
相关依赖与工具类
<dependency><groupId>com.baidu.aip</groupId><artifactId>java-sdk</artifactId><version>4.8.0</version></dependency>
package com.ctx.utils;import com.baidu.aip.ocr.AipOcr;
import org.json.JSONArray;
import org.json.JSONObject;import java.awt.*;
import java.io.IOException;
import java.util.HashMap;/*** @describe 识别图片上的文字* 官方文档:https://ai.baidu.com/ai-doc/OCR/Ikibizxql*/
public class Word {// 设置APPID/AK/SKpublic static final String appId = "你的 App ID";public static final String apiKey = "你的 Api Key";public static final String secretKey = "你的 Api Key";public static final AipOcr client = new AipOcr(appId, apiKey, secretKey);/** 文字识别方法*/public static String imgOcr(String imgpath){// 传入可选参数调用接口HashMap<String, String> options = new HashMap<String, String>();options.put("language_type", "CHN_ENG");options.put("detect_direction", "true");options.put("detect_language", "true");options.put("probability", "true");// 参数为本地路径JSONObject res = client.basicGeneral(imgpath, options);//解析jsonJSONArray wordsResult = (JSONArray)res.get("words_result");String ocrStr = "\n";StringBuffer sb=new StringBuffer();for(Object obj : wordsResult){JSONObject jo = (JSONObject)obj;sb.append(jo.getString("words") + "\n");}return sb.toString();}public static void main(String[] args) throws AWTException, IOException {String s = Word.imgOcr("C:\\Users\\Administrator\\Desktop\\sw_image\\a.png");System.out.println(s);}
}
识别效果
java截取屏幕指定范围内的图片并识别图片内的文字相关推荐
- java 屏幕识别_Java课程设计:捕获图片以及识别图中的文字
package屏幕捕捉以及识别;importjava.awt.Color;importjava.awt.FlowLayout;import java.awt.event.*;importjava.aw ...
- 截取屏幕指定区域保存为BMP文件
HBITMAP CopyScreenToBitmap(LPRECT lpRect) { //屏幕和内存设备描述表 HDC hSrcDC, hMemDC; //位图句柄 HBITMAP hBitmap, ...
- python实现自适应分辨率截取桌面图片并识别图片文字
1.先获取桌面中间截图或者txt文本窗口截图 2.对截图进行二值化处理,再进行图像识别,识别其中的文字 不多说,上代码: from PIL import Image from PyQt5.QtWidg ...
- php 图片 字母识别,php实现ocr文字识别
OCR的百度定义 (Optical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗.亮的模式确定其形状,然后用字符识别方法 ...
- Python提取word文档中的图片,识别图片文字之后再转存为word文档
#!/usr/bin/env python # coding: utf-8 import zipfile #压缩包 import os #文件库 import shutil import pytess ...
- 批量识别图片文字并存为Excel,几行Python轻松实现!
今天给大家分享批量识别图片的方法. 一.背景 也许你还记得,前不久复旦大学一博士生写了130行Python代码,批量识别核酸截图内容的故事.当时还被人民日报公众号报道出来,夸赞用所学贡献青春力量! 其 ...
- Python自动化办公:批量识别图片文字并存为Excel
来源:菜J学Python 一.背景 也许你还记得,前不久复旦大学一博士生写了130行Python代码,批量识别核酸截图内容的故事.当时还被人民日报公众号报道出来,夸赞用所学贡献青春力量! 其实,批量文 ...
- java截取固定大小图片_JAVA技巧(长字符串按指定长度截取)
在web开发中,会遇到这样一个问题,想让某个内容全部保持在一定长度范围内,未超出的行全部显示,超长的行只允许显示一定的长度,结尾用省略号代替. 粗想一下,实现这个功能很容易,直接取字符串的长度(用le ...
- java截取图片-设置方位+设置大小
java截取图片-设置方位+设置大小 package com.onegrid.darj.test; import java.awt.Rectangle; import java.awt.image ...
最新文章
- 90后清华女孩:博二开始研究世界级难题,3年发5篇Science,现入选中国榜“35岁以下科技创新35人”!...
- SAP MM 移动平均价的商品发票价格和采购订单价格差异的处理
- scrapy中的request对象
- 桌面计算机打开不了怎么办,电脑桌面上的所有东西都打不开了 怎么处理
- DotNetty 实现 Modbus TCP 系列 (三) Codecs Handler
- 复述-软考高级-网规-数据灾备
- VMware vCenter Server 的内部版本号和版本 (2143838)--2020-10-27 更新
- 神经网络之BP算法(图说神经网络+BP算法理论推导+例子运用+代码)
- 简易版牛奶布丁的做法 没烤箱照样做布丁
- qt自定义控件-水波纹进度条
- Unity 3D模型展示之模型高亮
- 一文搞懂css 2D动画效果
- python脚本编写流程
- 怎样将github上的代码下载到本地并运行?
- 关于瞳孔跟踪、面部器官识别的最终UI界面
- 数字世界的积木-从MOS管搭反相器,与非门,锁存器,触发器
- win8.1CPU使用率过高、卡顿、破音问题整理
- DTC设置控制$85服务
- 设置移动光猫外置路由器(上网+iptv正常使用)
- 科普|一文读懂NFT.Storage 创建过程
热门文章
- GNSS-INS组合导航:KF-GINS(二)
- 百度与瑞星的“高大上”——舍本逐末
- 数字式声纳设计原理 pdf_阿里P7大牛,深入剖析JVM底层设计原理+高级特性pdf,附46页ppt...
- 北京联发科嵌入式软件工程师笔试题目解析
- 最新八字精批付费测算系统源码+PHP内核
- C语言用fun函数实现两个数的交换
- [054] SSL 3.0曝出Poodle漏洞的解决方案-----网民篇
- 神舟战神win10改linux,神州战神G40把win10改成win7的详细教程(包括BIOS设置图)
- 加米谷大数据报告:多省市成立大数据中心
- 如何通过通达信接口获取最近的分钟级别行情数据?