Python+OpenCV实现旋转文本校正方式


Posted in Python onJanuary 09, 2020

假设我们有一幅图像,图像中的文本被旋转了一个未知的角度。为了对文字进行角度的校正,我们需要完成如下几个步骤:

1、检测出图中的文本范围

2、计算出文本被旋转的角度

3、将图像旋转特定的角度

第一步、读取图像,并做二值化处理

#读取图像,做二值化处理
img = cv.imread('img/imageTextR.png')
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
cv.imshow('gray', gray)
#像素取反,变成白字黑底
# gray = cv.bitwise_not(gray)
ret, thresh = cv.threshold(gray, 0, 255, cv.THRESH_BINARY_INV | cv.THRESH_OTSU)
cv.imshow('thresh', thresh)

Python+OpenCV实现旋转文本校正方式

第二步、计算包含了被旋转文本的最小边框

#计算包含了旋转文本的最小边框
coords = np.column_stack(np.where(thresh > 0))
print(coords)
#该函数给出包含着整个文字区域矩形边框,这个边框的旋转角度和图中文本的旋转角度一致
angle = cv.minAreaRect(coords)[-1]
print(angle)

我们将这些坐标传给函数cv.minAreaRect,该函数将给出包含着整个文字区域的矩形边框,这个边框的旋转角度和图中文本的旋转角度一致。

第三步、调整角度

#调整角度
if angle < -45:
  angle = -(90+ angle)
else:
  angle = -angle

在角度小于-45的情况下,在原来的角度上增加90度,角度大于-45度,直接对角度反转。

第四步、执行仿射变换

#仿射变换
h, w = img.shape[:2]
center = (w//2, h//2)
print(angle)
M = cv.getRotationMatrix2D(center, angle, 1.0)
rotated = cv.warpAffine(img, M, (w, h), flags=cv.INTER_CUBIC, borderMode=cv.BORDER_REPLICATE)
cv.putText(rotated, 'Angle: {:.2f} degrees'.format(angle), (10, 30), cv.FONT_HERSHEY_SIMPLEX, 0.7, (0, 0, 255), 2)

print('[INFO] angel :{:.3f}'.format(angle))
cv.imshow('Input', img)
cv.imshow('Rotated', rotated)

Python+OpenCV实现旋转文本校正方式

以上这篇Python+OpenCV实现旋转文本校正方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python的Django框架中为代码添加注释的方法
Jul 16 Python
举例讲解Python设计模式编程中的访问者与观察者模式
Jan 26 Python
详解Python判定IP地址合法性的三种方法
Mar 06 Python
django 使用 request 获取浏览器发送的参数示例代码
Jun 11 Python
python中aioysql(异步操作MySQL)的方法
Apr 11 Python
使用python实现mqtt的发布和订阅
May 05 Python
python 使用装饰器并记录log的示例代码
Jul 12 Python
解决reload(sys)后print失效的问题
Apr 25 Python
浅析Python 条件控制语句
Jul 15 Python
python使用matplotlib绘制折线图的示例代码
Sep 22 Python
python实现双人五子棋(终端版)
Dec 30 Python
pycharm Tab键设置成4个空格的操作
Feb 26 Python
Python 实现OpenCV格式和PIL.Image格式互转
Jan 09 #Python
Python实现i人事自动打卡的示例代码
Jan 09 #Python
Python 实现opencv所使用的图片格式与 base64 转换
Jan 09 #Python
python PIL/cv2/base64相互转换实例
Jan 09 #Python
Python&amp;&amp;GDAL实现NDVI的计算方式
Jan 09 #Python
Python-numpy实现灰度图像的分块和合并方式
Jan 09 #Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
Jan 09 #Python
You might like
一个多文件上传的例子(原创)
2006/10/09 PHP
php使用pear_smtp发送邮件
2016/04/15 PHP
php实现与python进行socket通信的方法示例
2017/08/30 PHP
js操作iframe兼容各种主流浏览器示例代码
2013/07/22 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
javascript跨域原因以及解决方案分享
2015/04/08 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
JS实现带缓冲效果打开、关闭、移动一个层的方法
2015/05/09 Javascript
JavaScript数组操作函数汇总
2016/08/05 Javascript
jQuery事件绑定方法学习总结(推荐)
2016/11/21 Javascript
JavaScript字符集编码与解码详谈
2017/02/02 Javascript
Vue 换肤的示例实践
2018/01/23 Javascript
JS实现基于拖拽改变物体大小的方法
2018/01/23 Javascript
对vue下点击事件传参和不传参的区别详解
2018/09/15 Javascript
[58:21]DOTA2亚洲邀请赛 4.3 突围赛 Liquid vs VGJ.T 第二场
2018/04/04 DOTA
[01:34:42]NAVI vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python的Flask开发框架简单上手笔记
2015/11/16 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
关于Flask项目无法使用公网IP访问的解决方式
2019/11/19 Python
Python自动采集微信联系人的实现示例
2020/02/28 Python
Python中的全局变量如何理解
2020/06/04 Python
Python实现一个简单的毕业生信息管理系统的示例代码
2020/06/08 Python
Python程序慢的重要原因
2020/09/04 Python
python模块内置属性概念及实例
2021/02/18 Python
python 如何在测试中使用 Mock
2021/03/01 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
Corelle官方网站:购买康宁餐具
2016/11/02 全球购物
美国购买汽车零件网站:Buy Auto Parts
2018/04/02 全球购物
园林毕业生自我鉴定范文
2013/12/29 职场文书
感恩节寄语2015
2015/03/24 职场文书
预备党员转正党小组意见
2015/06/01 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
雨雪天气温馨提示
2015/07/15 职场文书
2019毕业论文致谢词
2019/06/24 职场文书
准备去美国留学,那么大学申请文书应该怎么写?
2019/08/12 职场文书