android - OpenCV 中的文本清理器,如 ImageMagicK 脚本

标签 android opencv ocr tesseract

在使用 tesseract 运行 OCR 之前,我尝试使图像中的文本更清晰。在 this link ,他们提供了一个很好的脚本来通过 ImageMagicK 来完成它。我想知道是否可以将此脚本和函数转换为 OpenCV 代码?例如,带有如下参数的脚本:

-g -e none -f 15 -o 20

来自解释:

-g ...................... convert document to grayscale before enhancing
-e .... enhance ......... enhance image brightness before cleaning;
                       choices are: none, stretch or normalize; 
                       default=none
-f .... filtersize ...... size of filter used to clean background;
                       integer>0; default=15
-o .... offset .......... offset of filter in percent used to reduce noise;
                      integer>=0; default=5

我如何在 OpenCV 代码中做同样的事情?由于我是OpenCV的新手,我只知道如何转换为灰度。任何帮助将不胜感激。

最佳答案

您必须查看 ImageMagick 文档才能找到使用的确切算法,但这里是一个粗略的猜测:

-g ...................... convert document to grayscale before enhancing

那将是 cv::cvtColor使用 BGR2GRAY 转换或更好,使用 cv::imread(filename,CV_LOAD_IMAGE_GRAYSCALE) 直接加载灰度图像

-e .... enhance ......... enhance image brightness before cleaning;
                       choices are: none, stretch or normalize; 
                       default=none

既然你选择了“无”,那就什么都不是了。否则,使用 cv::equalizeHist (tutorial)。

-f .... filtersize ...... size of filter used to clean background;
                       integer>0; default=15
-o .... offset .......... offset of filter in percent used to reduce noise;
                      integer>=0; default=5

我对后两个参数的猜测是 cv::adaptiveThreshold -f 对应 OpenCV 中的 blockSize 参数,-o 对应常量 C。您需要在 ImageMagick 文档中检查实际的自适应阈值方法(高斯或均值)

关于android - OpenCV 中的文本清理器,如 ImageMagicK 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21273761/

相关文章:

java - 如何清除Glide库本地磁盘缓存

c# - opencv中的InRange方法与python/cv2和c#/emgu有什么区别?

unicode - 教 OCR 理解 NSA 和 FISC 修订

ios - 如何将 hin.cube.lm 放入 xcode

matlab - OCR字符重建和填充

Android ActionBar/Toolbar 在我的应用程序中消失了

android - TelephonyManager.getNetworkCountryIso() 究竟返回什么?

opencv - 什么是暴力描述符匹配器?

python - 如何去除模板匹配 (opencv) y 轴的变化

java - Android Studio 无法将文件粘贴到 Assets 文件夹