上面说的是直接生成的样本,但是那样的表格边框直接生成还可以,字符都生成,那就不是手写识别了。
所以一开始想着做个简单的测试来看看情况:
结果发现边框线和里面字符相连接,就会隔断矩形,导致识别失败。
再来一个斜着点点 的:(这个要是能够摆正,这是会摆正里面的那个框还是摆正拍照时候的角度)
这个表格反正是会对应着一个轮廓的,现在这个是最小外接矩形,同时就能找到四个顶点位置。
需要对照片模糊处理,来解决拍照时的光线暗问题。
把透视变换简单的介绍和理解放上面:
经过几个点得出的透视变换矩阵,可以完成四边形到四边形的变换(所以改代码时候注意这几个点)。
求解出的变换矩阵就可以将一个正方形变换到四边形。反之,四边形变换到正方形也是一样的。于是,我们通过两次变换:四边形变换到正方形+正方形变换到四边形就可以将任意一个四边形变换到另一个四边形。
定义边界点,输入到std::vector数据结构中:
原代码是将边界点的坐标直接取出来后设置,再换其他的图片变换时就会出问题,所以边界点的坐标不应该手动输入,而是获取边界轮廓后,得到一个包含几个点的数组
下面就是尝试做的透视变换的过程:
1.从源图开始 好像应该不失一般性了(从后面的情况可以看出,这张图片是有多大的问题存在。)。
2.
3.
可以看出,确实经过简单的透视变换之火,能够纠正图片,方便轮廓识别。
但是后面的就惨不忍睹了。
4.
5.
6.
看起来主要的问题就是在后面的抽取表格元素的面积的控制,以及一开始的将素材分为两块。