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 获取 Linux 系统信息的代码
Jul 13 Python
TensorFlow实现卷积神经网络
May 24 Python
Python requests库用法实例详解
Aug 14 Python
在Python中通过getattr获取对象引用的方法
Jan 21 Python
对python判断ip是否可达的实例详解
Jan 31 Python
Python 实现交换矩阵的行示例
Jun 26 Python
django实现用户注册实例讲解
Oct 30 Python
Python实现随机生成任意数量车牌号
Jan 21 Python
pytorch 限制GPU使用效率详解(计算效率)
Jun 27 Python
pandas to_excel 添加颜色操作
Jul 14 Python
如何更换python默认编辑器的背景色
Aug 10 Python
Python3.9.1中使用match方法详解
Feb 08 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
PHP禁止个别IP访问网站
2013/10/30 PHP
PHP实现QQ空间自动回复说说的方法
2015/12/02 PHP
THINKPHP在添加数据的时候获取主键id的值方法
2017/04/03 PHP
JQuery AJAX实现目录浏览与编辑的代码
2008/10/21 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
jquery中邮箱地址 URL网站地址正则验证实例代码
2013/09/15 Javascript
js 跳出页面的frameset框架示例介绍
2013/12/23 Javascript
js鼠标悬浮出现遮罩层的方法
2015/01/28 Javascript
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
在JavaScript中操作时间之setYear()方法的使用
2015/06/12 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
即将发布的jQuery 3 有哪些新特性
2016/04/14 Javascript
微信小程序 购物车简单实例
2016/10/24 Javascript
详解js中==与===的区别
2017/01/08 Javascript
JavaScript对象引用与赋值实例详解
2017/03/15 Javascript
angular使用post、get向后台传参的问题实例
2017/05/27 Javascript
Nodejs回调加超时限制两种实现方法
2017/06/09 NodeJs
jquery基于layui实现二级联动下拉选择(省份城市选择)
2017/06/20 jQuery
关于React动态加载路由处理的相关问题
2019/01/07 Javascript
详解javascript对数组和json数组的操作
2019/04/15 Javascript
微信jssdk踩坑之签名错误invalid signature
2020/05/19 Javascript
如何使用JS console.log()技巧提高工作效率
2020/10/14 Javascript
python学习之第三方包安装方法(两种方法)
2015/07/30 Python
如何利用Fabric自动化你的任务
2016/10/20 Python
Python解析、提取url关键字的实例详解
2018/12/17 Python
对python tkinter窗口弹出置顶的方法详解
2019/06/14 Python
如何将你的应用迁移到Python3的三个步骤
2019/12/22 Python
python从ftp获取文件并下载到本地
2020/12/05 Python
iPhoneX安全区域(Safe Area)底部小黑条在微信小程序和H5的屏幕适配
2020/04/08 HTML / CSS
乐观大学生的自我评价
2014/01/10 职场文书
出纳员的岗位职责
2014/02/22 职场文书
保安部任务及岗位职责
2014/02/25 职场文书
社区工作者演讲稿
2014/05/23 职场文书
交通事故赔偿起诉书
2015/05/20 职场文书
PHP新手指南
2021/04/01 PHP
JavaScript实现两个数组的交集
2022/03/25 Javascript