我试图从图像中显示的数据表中读取数据。
图片示例:
高分辨率图片在这里: http://i.imgur.com/zUwozvn.jpg
目前,我已经能够使用opencv(C ++)从图像中检测并裁剪表格。我需要采取哪些步骤逐个细胞切割表以便以后执行OCR?
答案 0 :(得分:3)
我建议你尝试不同的东西,例如:
a)裁剪完表格后,运行Canny 边缘检测器以检测图像中(明确定义的)线条。做类似的事情:
Mat im = imread("zUwozvn.jpg"); //read your image
Mat gr,edges;
cvtColor(im,gr,CV_BGR2GRAY); //
imshow("ori",gr);
Canny(gr,edges,50,100); // try different thresholds!
imshow("edges",edges);
waitKey();
这是我获得的:
一旦检测到边缘,您可能需要计算边缘图像的垂直和水平投影(即每行和每列中的像素总和)以检测表格单元格。
b)尝试现有的文本检测算法,而不是基于边缘检测的方法,例如在OpenCV 3.0.0(http://docs.opencv.org/trunk/modules/objdetect/doc/erfilter.html)中实现的算法。
希望它有所帮助!