上面说的是直接生成的样本,但是那样的表格边框直接生成还可以,字符都生成,那就不是手写识别了。
所以一开始想着做个简单的测试来看看情况:
结果发现边框线和里面字符相连接,就会隔断矩形,导致识别失败。

手写选择题识别-透视变换

再来一个斜着点点 的:(这个要是能够摆正,这是会摆正里面的那个框还是摆正拍照时候的角度)
这个表格反正是会对应着一个轮廓的,现在这个是最小外接矩形,同时就能找到四个顶点位置。
手写选择题识别-透视变换

需要对照片模糊处理,来解决拍照时的光线暗问题。

把透视变换简单的介绍和理解放上面:
经过几个点得出的透视变换矩阵,可以完成四边形到四边形的变换(所以改代码时候注意这几个点)。

求解出的变换矩阵就可以将一个正方形变换到四边形。反之,四边形变换到正方形也是一样的。于是,我们通过两次变换:四边形变换到正方形+正方形变换到四边形就可以将任意一个四边形变换到另一个四边形。

定义边界点,输入到std::vector数据结构中:
原代码是将边界点的坐标直接取出来后设置,再换其他的图片变换时就会出问题,所以边界点的坐标不应该手动输入,而是获取边界轮廓后,得到一个包含几个点的数组

下面就是尝试做的透视变换的过程:

1.从源图开始 好像应该不失一般性了(从后面的情况可以看出,这张图片是有多大的问题存在。)。
手写选择题识别-透视变换

2.
手写选择题识别-透视变换

3.
手写选择题识别-透视变换

可以看出,确实经过简单的透视变换之火,能够纠正图片,方便轮廓识别。

但是后面的就惨不忍睹了。

4.
手写选择题识别-透视变换

5.
手写选择题识别-透视变换
6.
手写选择题识别-透视变换

看起来主要的问题就是在后面的抽取表格元素的面积的控制,以及一开始的将素材分为两块。

相关文章:

  • 2022-12-23
  • 2021-10-15
  • 2021-05-23
  • 2021-07-01
  • 2021-04-20
  • 2022-01-27
猜你喜欢
  • 2021-09-07
  • 2021-05-13
  • 2021-04-05
  • 2021-07-13
相关资源
相似解决方案