我正在搜索如何从android中的图像中提取数字数字。我必须拍一张照,然后我需要从图像中获取数字。 OpenCV是一个选项。我们可以将opencv转换成android吗?请建议我任何正确的方法。我将感激你。
答案 0 :(得分:1)
OpenCV支持Android平台。你必须在这里逐步设置OpenCV4Android。
http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/O4A_SDK.html
然而,OpenCV不是一个选项,而只是一个步骤。然后你必须使用字符识别引擎。最受欢迎的是Tesseract-ocr。但这真的不是一件容易的事。
此外,他们经常识别所有角色。如果你能实现它,提取数字将是Java中最容易的部分。
答案 1 :(得分:1)
Android有很多OCR 检查链接
答案 2 :(得分:0)
这对我有用,您只需要指定数字大小即可。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;`