java - 使用 opencv (Java) 的阈值图像

标签 java android opencv image-processing tesseract

我正在为我的项目使用 Opencv。我需要将下面的图像转换为阈值图像

Original Image

我试过这个功能:

Imgproc.threshold(imgGray, imgThreshold, 0, 255, Imgproc.THRESH_BINARY + Imgproc.THRESH_OTSU); 

但是结果不是很好,如下图所示

threshold

所以我尝试了 adaptiveThreshold 函数:

Imgproc.adaptiveThreshold(imgGray, imgThreshold, 255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C, Imgproc.THRESH_BINARY, 11, 2); 

结果是:

adaptiveThreshold

我只希望有一个只有白色背景和黑色文本的二值图像,没有黑色区域或噪声(我不喜欢使用 Photo.fastNlMeansDenoising,因为它需要很多时间)。请帮我解决这个问题。

还有,我用的是Tesseract来识别日文,但是准确率不是很好。您对日语更好的 OCR 有什么建议,或者有什么提高 Tesseract 质量的方法吗?

最佳答案

adaptiveThreshold 是这里的正确选择。 只需要一点点调整。 有了这些参数(它是 C++,但你可以很容易地转换成 Java)

Mat1b gray= imread("path_to_image", IMREAD_GRAYSCALE);
Mat1b result;
adaptiveThreshold(gray, result, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, 40);

生成的图像是:

enter image description here

关于java - 使用 opencv (Java) 的阈值图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31289895/

相关文章:

java - Eclipse Oxygen - 添加 JRE/JDK 9 时遇到问题

android - Dropbox 集成在运行时显示错误

android - ListView 在 android 中显示对象而不是行

android - 在 CollapsingToolbarLayout/AppBarLayout 中禁用垂直滚动

python - 调整图像大小,使其大小与指定的宽高比匹配

java - Websphere Liberty - 如何从 Windows 注册表获取 keystore 密码?

java - 为什么我的自定义 PermissionEvaluator 不起作用?

java - 包名与文件路径不对应

objective-c - 将字典从 Objective C 文件返回到 Swift?

c++ - opencv 从缓冲区读取 jpeg 图像