JavaCV - 改进 ocr
Posted
技术标签:
【中文标题】JavaCV - 改进 ocr【英文标题】:JavaCV - improve for ocr 【发布时间】:2017-08-14 18:37:01 【问题描述】:假设我想改进一张热敏纸的图片,我正在使用 JAVA CV,但我的图片全黑了。
我在这里举个例子:
代码如下:
CvScalar min = cvScalar(100, 100, 130, 0);//BGR-A
CvScalar max= cvScalar(140, 110, 255, 0);//BGR-A
cvInRangeS(image, min, max, imgThreshold);
更新:
我正在尝试将图像转换为灰度但没有成功。
IplImage image = cvLoadImage("example6.jpg");
IplImage imgThreshold = cvCreateImage(cvGetSize(image), 8, 1);
cvInRangeS(image, cvScalar(hueLowerR, 100, 100, 0), cvScalar(hueUpperR, 255, 255, 0), imgThreshold);
cvSaveImage("test1.jpg", imgThreshold););
【问题讨论】:
你能详细说明你想要做什么吗? 谢谢。我想从票中提取信息。想象一下,我确实有一张肯德基的票,我想提取财政号码 @John 让我这样问——你知道 OCR 还没有达到人类视觉的水平。是什么让您认为使用当前最先进的技术可以实现您想要的? @sashoalm 我已经可以解析图像了,但是我在某些单词和数字上遇到了一些问题,所以我正在尝试在 OCR 之前改进图像。 您是否尝试过任何改进 OCR 检测的方法? 【参考方案1】:如果你想提高 OCR 检测的准确率,你必须提高你输入的图像的质量。
-
你可以试试Contrast Limited Adaptive Histogram Equalization(我用python做了以下):
-
您可以在灰度图像上应用二进制阈值:
您可能想知道我是如何获得合适的阈值的...好吧,看看我不久前发布的THIS ANSWER。
【讨论】:
我正在尝试将图像转换为灰度但没有成功。 \n IplImage image = cvLoadImage("example6.jpg"); IplImage imgThreshold = cvCreateImage(cvGetSize(image), 8, 1); cvInRangeS(图像, cvScalar(hueLowerR, 100, 100, 0), cvScalar(hueUpperR, 255, 255, 0), imgThreshold); cvSaveImage("test1.jpg", imgThreshold);); 结果图片全黑 您是否按照我发布的答案计算了中位数?以上是关于JavaCV - 改进 ocr的主要内容,如果未能解决你的问题,请参考以下文章