OCR:低对比度/嘈杂区域

问题描述 投票:3回答:1

我正在尝试识别下面显示的17个字符的代码。

enter image description here

我目前正在使用OpenCV作为我的管道: (1)转换为黑白图像 (2)计算梯度图像 (3)Otsu阈值 (4)找到轮廓 (5)找到轮廓的边界框

当图像相对干净时,它非常有效。在上面的例子中,我能够检测到“H26A838778”。有没有人知道如何处理图像的左侧,对比度低,水印增加噪音?

opencv ocr watermark noise
1个回答
1
投票

您可以尝试使用Simple Thresholding阈值图像

由于字符之间的颜色相同或相似,并且它们的颜色值高于背景(更白色),您可以尝试找到阈值颜色值,这将使字符的颜色保持白色,其他所有颜色保持为黑色。在以下示例(Java代码)中,此数字为140。

Mat original = Imgcodecs.imread("pathToOriginalImage");
Mat gray = new Mat();
Imgproc.cvtColor(original, gray, Imgproc.COLOR_RGB2GRAY, 0);
Mat binary = new Mat();
Imgproc.threshold(original,binary,140,255,Imgproc.THRESH_BINARY);

转换为灰度

gray scale

阈值

binary

OCR现在应该会给出一些好的结果。

© www.soinside.com 2019 - 2024. All rights reserved.