我正试图从数独板中提取数字.在检测到电路板,它的角落和变形后,我留下了一个只有电路板的漂亮的排列图像.
现在我正在尝试使用Tesseract android实现,Tess-Two来识别数字.
我将图像分成9个部分
currentCell = undistortedThreshed.submat(rect);
其中rect是围绕图像的矩形.
现在到数字识别.
有些数字,如4,它可以完美识别.一些人,大多数是6,7,8被认为是0或什么也没有.
我想通过清理currentCell图像尽可能多地帮助tesseract.此刻它看起来像这样
. (也尝试没有倒置阈值).我想摆脱白线(数独线).
我尝试过这样的事(取自here)
imgproc.Canny(currentCell, currentCell, 80, 90);Mat lines = new Mat();int threshold = 50;int minlinesize = 5;int lineGap = 20;imgproc.@R_763_3017@(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之后的图像,但houghlines没有检测到任何行.尝试使用不同的houghlines和@R_763_3017@,如OpenCV文档中所示,但没有任何作用……
这些都很明显……我做错了什么?
谢谢!
解决方法:
我最终做了一些不同的事情.
我使用findContours来获得最大的轮廓,即数字.
通过使用boundingRect得到它的边界框.
使用submat和voilla提取.我只得到了数字.
不幸的是,它似乎没有任何区别.
Tesseract仍然无法正确识别数字.有时它没有给出结果,有时,在扩大数字之后它将6识别为0.
但这是另一个问题的问题.
以上是内存溢出为你收集整理的java – 清理图像以帮助在Android上进行tesseract全部内容,希望文章能够帮你解决java – 清理图像以帮助在Android上进行tesseract所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)