/image-process

图像处理

Primary LanguageJava

image-process

前一阵在尝试实现一个robot rpa相关的设计理论,涉及到需要快速的对比图像的差异,并且提取出差异部分的内容。

一、思路

  • 使用opencv读取图像为RGB数据
  • 根据RGB的坐标宽、高、通道确定通道值
  • 使用hash对其进行标记,以便后续快速查找
  • 根据宽、高、通道快速对比查找找出不符合的部分,求出差异矩形
  • 根据像素差异点截取出差异矩形部分
  • 出差异矩形部分的图片流送到Tesseract识别

注意:这里如果涉及到不同分辨率之间的图像识别,需要先做以下前置处理:

  • 对比2张图片的分辨率,求出最小分辨率范围
  • 根据最小分辨率进行图像压缩,使其都按固定分辨率进行后续的工作

二、获取opencv

  • 访问 opencv releases 选择合适的平台下载对应版本的包,我这里以windows为例(官网没有提供linux的安装方式,都是直接下载源代码了cmake)
  • 安装之后lib位置为
    • windows在安装目录下的build\java\x64
    • linux在安装目录下的build/lib/
  • opencv-470.jar(我下载的版本是4.7)包放到你的项目工程下,用包管理器添加引用
  • opencv_java470.dll(我下载的版本是4.7)包放到你的项目工程下 到这里,项目就具备了opencv的使用条件了

三、获取tesseract

我这里用的不是原生 tesseract ,我用的是 tess4j ,它对前者进行了一些简易封装,不过我还是建议大家使用前者,至于原因大家可以去看一下 tess4j issues

获取tesseract所需的语言包

  • 语言包下载 tessdata
  • 语言包说明 tessdoc
  • 将下载的语言包放到项目的tessdata目录下

说明:

  • 该代码只有windows下运行的示例,想在其他环境下运行请按opencv的文档要求更改
  • 该代码缺少opencv对应的opencv_java470.dll(我下载的版本是4.7)文件,github限制单个文件不能超过100MB
  • 该代码缺少项目的tessdata文件夹及语言包,太大上传不上来,需要自己下载