从android中的图像中检测数字
Posted
技术标签:
【中文标题】从android中的图像中检测数字【英文标题】:digit detection from the image in android 【发布时间】:2014-10-30 06:28:23 【问题描述】:我正在寻找如何从 android 中的图像中提取数字数字。我必须拍照,然后我需要从图像中获取数字。 OpenCV 是一种选择。我们可以将 opencv 转换为 android 吗?请建议我任何适当的方法。我会很感激你的。
【问题讨论】:
实际要求是什么? 检查this和this post 【参考方案1】:Android 有很多 OCR 检查那里的链接
-
https://github.com/rmtheis/android-ocr
https://github.com/GautamGupta/Simple-Android-OCR
http://www.abbyy.com/mobileocr/android/
best OCR (Optical character recognition) example in android
【讨论】:
【参考方案2】:OpenCV 支持 Android 平台。您必须设置 OpenCV4Android,这里是一步一步的说明。
http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/O4A_SDK.html
然而,OpenCV 不是一个选项,而只是一个步骤。然后你必须使用字符识别引擎。最受欢迎的是 Tesseract-ocr。但这确实不是一件容易的事。
此外,它们通常可以识别所有字符。如果你能做到,提取数字将是 Java 中最简单的部分。
【讨论】:
【参考方案3】:这对我有用,你只需要指定数字大小` ArrayList output=new ArrayList();
cvtColor(input,input,COLOR_BGRA2GRAY);
Mat img_threshold = new Mat();
threshold(input, img_threshold, 60, 255,THRESH_BINARY_INV);
Mat img_contours =copy(img_threshold);
//Find contours of possibles characters
List<MatOfPoint> contours = new ArrayList<MatOfPoint>();
findContours(img_contours, contours,new Mat(), Imgproc.RETR_EXTERNAL, Imgproc.CHAIN_APPROX_NONE); // all pixels of each contours
contours=sort(contours);
// Draw blue contours on a white image
Mat result=copy(img_threshold);
cvtColor(result, result, COLOR_GRAY2BGR);
drawContours(result,contours,
-1, // draw all contours
new Scalar(0,0,255), // in blue
1); // with a thickness of 1
//Start to iterate to each contour founded
ListIterator<MatOfPoint> itc = contours.listIterator();
//Remove patch that are no inside limits of aspect ratio and area.
while (itc.hasNext())
//Create bounding rect of object
MatOfPoint mp = new MatOfPoint(itc.next().toArray());
Rect mr = boundingRect(mp);
rectangle(result,new Point(mr.x,mr.y),new Point(mr.x+mr.width,mr.y+mr.height),new Scalar(0,255,0));
Mat auxRoi=new Mat(img_threshold,mr);
if (OCR_verifySizes(auxRoi))
output.add(preprocessChar(auxRoi));
return output;`
【讨论】:
以上是关于从android中的图像中检测数字的主要内容,如果未能解决你的问题,请参考以下文章
如何在 android 中提高 OpenCV 人脸检测性能?