gpt4 book ai didi

java - 清洁图像以帮助在 Android 上进行 tesseract

转载 作者:太空宇宙 更新时间:2023-11-03 10:25:20 25 4
gpt4 key购买 nike

我正在尝试从数独板上提取数字。在检测到电路板、它的角和变换之后,我只剩下一张漂亮的电路板图像。现在我正在尝试使用 Tesseract android 实现 Tess-Two 来识别数字。我将图像分成 9 部分

currentCell = undistortedThreshed.submat(rect);

其中 rect 是围绕图像的矩形。

现在是数字识别。

有些数字,比如 4,它可以完美识别。一些,主要是 6、7、8 被识别为 0 或什么都没有。

我想通过清理 currentCell 图像来尽可能多地帮助 tesseract。目前它看起来像这样 Inverted 6 . (也尝试不使用倒置阈值)。我想摆脱白线(数独线)。我试过这样的事情(取自 here )

Imgproc.Canny(currentCell, currentCell, 80, 90);
Mat lines = new Mat();
int threshold = 50;
int minLineSize = 5;
int lineGap = 20;

Imgproc.HoughLinesP(currentCell, lines, 1, Math.PI / 180,
threshold, minLineSize, lineGap);
for (int x = 0; x < lines.cols() && x < 1; x++) {
double[] vec = lines.get(0, x);
double x1 = vec[0], y1 = vec[1], x2 = vec[2], y2 = vec[3];
Point start = new Point(x1, y1);
Point end = new Point(x2, y2);

Core.line(currentCell, start, end, new Scalar(255), 10);

}

但它没有绘制任何东西,我尝试弄乱线条的宽度和颜色,但仍然没有。尝试在大图像上画线,在未脱粒的图像上画线,没有任何效果..

有什么建议吗?

编辑

出于某种原因,它似乎找不到任何行。这是应用 canny 后图像的样子 6 after canny但是 HoughLines 没有检测到任何线条。尝试使用不同值的 HoughLinesHoughLinesP,如 OpenCV 文档中所示,但没有任何效果......那些是非常明显的线条..我做错了什么?谢谢!

最佳答案

我最终做了一些不同的事情。

我使用findContours 得到最大的轮廓,也就是数字。

使用boundingRect得到它的边界框。

使用 submat 和 voilla 提取它。我只得到了数字。

不幸的是,这似乎没有任何区别。Tesseract 仍然无法正确识别数字。有时它没有给出结果,有时,在扩展数字后它将 6 识别为 0。但这是另一个问题的问题。

关于java - 清洁图像以帮助在 Android 上进行 tesseract,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13541660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com