我正在尝试识别下面显示的17个字符的代码。
我目前正在使用OpenCV作为我的管道:
(1)转换为B& W图像
(2)计算梯度图像
(3)Otsu Thresholding
(4)找到轮廓
(5)找到轮廓的边界框
图像相对干净时效果很好。在上面的例子中,我能够检测到“H26A838778”。有没有人知道如何处理图像的左侧,对比度低,水印增加了噪音?
答案 0 :(得分: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);
转换为灰度
<强>阈值强>
OCR现在应该会给出一些好的结果。