tesseract识别图片中文字(一)
一、对于复杂背景中的文本提取
我测试用的简单的单行文本,如果非文本区多对二值化影响大,首先进行提取文本行,再对提取的文本行进行二值化。
实例图片:
图片中的文字区域从此视频帧中提取:
1、切取图片中的行
提取边缘信息,边缘图像进行水平投影,将每一行中的像素值相加,得到一个每行边缘信息的数组,
求数组的波谷,两个波谷直接的区间就为文本行。
求取波谷,我也没想到什么好的算法,因为数组是有波动的,只提取极小值也不对,会提取到特别多个波谷。
下一步想平滑后求极小值。
目前切行后为:
2、对文本行归一化到一定的高
按原来的宽高比对图片进行缩放,缩放到高为80个像素点(看论文里的经验值),便于文本的识别。
float ratioWH = (float)(image->width)/image->height;CvSize cv;cv.height = 80;//将文字行比例转换为高80cv.width = 80*ratioWH;IplImage *norImage = cvCreateImage(cv,8,1);cvResize(image,norImage);
3、对归一化的文本行进行二值化
提取归一化文本行的边缘信息,因为文本现在占图像的主体,边缘点的特征跟文本的特征比较相似(对于渐变文本,边缘和
填充不一致的也没有考虑,只考虑简单的文本颜色比较单调的),根据边缘点的位置在归一化图上提取相应点的颜色特征,
在这里我又加了连通域分析,不过感觉没有什么改变。
IplImage *cannyImage = cvCreateImage(cvGetSize(norImage),8,1);cvCanny(norImage,cannyImage,50,150);CvMemStorage *pStor = cvCreateMemStorage(0);///创建目标轮廓存储空间;CvSeq *pCont = NULL;///无需释放内存cvFindContours(cannyImage, pStor, &pCont,sizeof(CvContour), CV_RETR_CCOMP, CV_CHAIN_APPROX_SIMPLE);//获取二值图像轮廓信息cvDrawContours(cannyImage,pCont,cvScalarAll(255),cvScalarAll(255),0,CV_FILLED,8, cvPoint(0, 0));int sum = 0;int num = 0;for(int i=0;i<norImage->height;i++){for(int j=0;j<norImage->width;j++){uchar data = *(cannyImage->imageData+i*cannyImage->widthStep+j);if(data!=0){uchar data2 = *(norImage->imageData+i*norImage->widthStep+j);sum += data2;num++;}}}//二值化float average =(float)(sum)/num;for(int i=0;i<norImage->height;i++){for(int j=0;j<norImage->width;j++){if((uchar)*(norImage->imageData+i*norImage->widthStep+j)>average){*(norImage->imageData+i*norImage->widthStep+j) = 255;}else{*(norImage->imageData+i*norImage->widthStep+j) = 0;}}}
二值化后图片:
背景还是有没有去掉的,根据上视频帧是曝光的原因,考虑均衡一下。
4、然后用二值化的图片再用tesseract识别。
http://blog.csdn.net/kuaile123/article/details/9302949
tesseract识别图片中文字(一)相关推荐
- python 识别图片中的中文_python识别图片中文字的方法
Tesseract 文字识别是ORC的一部分内容,ORC的意思是光学字符识别,通俗讲就是文字识别.Tesseract是一个用于文字识别的工具,我们结合Python使用可以很快的实现文字识别.但是在此之 ...
- 单张、批量识别图片中文字(写入txt文件、窗口视图创建、打包.exe文件)(百度文字识别SDK+Python的GUI之tklinker+打包pyinstaller)
昨天我姐问我有没有软件可以批量识别图片上的文字,她在帮客户做资料整理,但是用的方法只能一张一张上传识别,不仅效率低还浪费时间. 我就找了找批量识别的软件,下载下来觉得:嗯?不错,界面也挺好,小东西做 ...
- 图像文字识别(二):java调用tesseract 识别图片文字
在JAVA中调用tesseract识别图片的文字内容,主要有两种方式:cmd方式,tess4j方式.在这篇博客中,主要记录一下通过cmd命令行的方式.cmd方式,就是通过在java中调用命令行,来 ...
- python批量识别图片中文字_Python识别图片中的文字
一.前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存.但是当我们想用到里面的 ...
- python批量识别图片中文字_如何用Python识别图片中的文字?
一.前言 不知道大家有没有遇到过这样的问题,就是在某个软件或者某个网页里面有一篇文章,你非常喜欢,但是不能复制.或者像百度文档一样,只能复制一部分,这个时候我们就会选择截图保存.但是当我们想用到里面的 ...
- python批量识别图片中文字_python实现中文图片文字识别--OCR about chinese text--tesseract...
0.我的环境: win7 32bits python 3.5 pycharm 5.0 1.相关库 安装pillow: pip install pillow 安装tesseract: 自带了英文语言包, ...
- 深入学习使用ocr算法识别图片中文字的方法
公司有个需求,简单点说需要从一张图片中识别出中文,通过python来实现,当然其他程序也行,只要能实现,而小编主要学习python,所以就提了python.一个小白在网上遨游了一天,终于找到一丝丝思绪 ...
- python使用aip库识别图片中文字
一.获取百度智能云API的AppID / API Key / Secret Key 1.创建应用 百度智能云登录地址:https://login.bce.baidu.com/ 2.立即创建 3.得到A ...
- 识别图片中文字的三种方法/图片转文字
一.钉钉 钉钉内置了很多小功能.打开手机钉钉,点击左下角的消息按钮,然后点击右上角的+号-扫一扫,点击拍图识字选中需要识别的文字即可. 二.QQ 打开手机QQ,点击右上角的+号-扫一扫之后,点击转文字 ...
最新文章
- 图像处理分类、一般流程与算法
- 19课 Vue第二节
- 一起谈.NET技术,数据库访问的性能问题与瓶颈问题
- Spring Boot + Thymeleaf 创建web项目
- stm32f4 输出pwm波_stm32的pwm输出代码及注释
- robcad和catia是什么关系_proe/CATIA/UG/SolidWorks软件区别与联系
- mac vim python3_VIM学习笔记 编译源码(Compile Code)-Python
- 掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等)...
- 企业级SpringBoot教程(十一)springboot集成swagger2,构建Restful API
- C++模板元 -- 变长参数模板
- java subset_Java中的TreeSet的subSet()方法 Java.util.TreeSet.subSet() - Break易站
- svn 回退/更新/取消至某个版本命令详解
- SNMPWALK命令解析
- 计算机能换显卡吗,一体机电脑可以更换CPU和显卡嘛?
- weex_iOS集成
- javax.mail.MessagingException: Unknown SMTP host: smtp.163.com;
- docker容器中获取宿主机任意信息
- JAVA音程_下列选项中哪个音程是减三和弦?
- Linux报错: terminate called after throwing an instanc
- Web服务器群集——部署AWStats基于Apache的日志管理