使用opencv的阈值图像(Java)
Threshold image using opencv (Java)
我正在为我的项目使用 Opencv。我需要将下面的图像转换为阈值图像
我试过这个功能:
Imgproc.threshold(imgGray, imgThreshold, 0, 255, Imgproc.THRESH_BINARY + Imgproc.THRESH_OTSU);
但是结果不是很好,如下图
所以我尝试了 adaptiveThreshold function
:
Imgproc.adaptiveThreshold(imgGray, imgThreshold, 255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C, Imgproc.THRESH_BINARY, 11, 2);
结果:
我只想要一个只有白色背景和黑色文本的二值图像,没有黑色区域或噪音(我不喜欢使用 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);
生成的图像是:
我正在为我的项目使用 Opencv。我需要将下面的图像转换为阈值图像
我试过这个功能:
Imgproc.threshold(imgGray, imgThreshold, 0, 255, Imgproc.THRESH_BINARY + Imgproc.THRESH_OTSU);
但是结果不是很好,如下图
所以我尝试了 adaptiveThreshold function
:
Imgproc.adaptiveThreshold(imgGray, imgThreshold, 255, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C, Imgproc.THRESH_BINARY, 11, 2);
结果:
我只想要一个只有白色背景和黑色文本的二值图像,没有黑色区域或噪音(我不喜欢使用 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);
生成的图像是: