图片角度不对,需要做校正,校正后ocr识别准确率更高,网上找了一圈,暂时没发现怎么计算图片旋转角度的资料。
首先就是查找怎么做图片旋转,找到2篇文章,4 Point OpenCV getPerspective Transform Example 和 使用 OpenCV 和 Python 对图片进行旋转。第一篇的方法,是先要确定4个角的顶点,要是能确定就轻松多了,放弃。第二篇的方法,就是需要传入旋转角度。
之后就是想怎么计算需要旋转的角度。调查过程中,发现了霍夫变换这个东西,抓住了一点点灵感,灵机一动。这个东西不是可以画一堆的线,有了线,角度很好算,三角函数,tan(角度)=高/长,弧度=角度*180/π。之后继续调查,HoughLines得到的是线的长度和弧度,HoughLinesP得到的是2个点的坐标,于是选定了HoughLines这个方法。
做霍夫变换,模糊这一步的操作是很有必要的,没做模糊,少的都要检测出1900多组的数据,经过一定模糊之后,得到的数据就少多了。那么怎么在检测出来的线里,获取我们需要的角度?需要处理的图是矩形(长方形)的,虽然有一些干扰,最后角度计算对了,还是能调整成比较平整的矩形的。获取到的直线有几十组,经过一些样例图片测试,不能取第一条线,也不能取最后一条线,怎么设计比较好?
把数据按区间分组。这里分组的算法是自己想的,没啥理论依据,就是拍脑袋决定了(数学不够好)。思路:按照弧度分组,0-45, 45-90, 90-135,135-18