在使用 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/