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框架的dj-scaffold项目
May 30 Python
Python 读写文件和file对象的方法(推荐)
Sep 12 Python
Python 和 JS 有哪些相同之处
Nov 23 Python
Python发送http请求解析返回json的实例
Mar 26 Python
Django csrf 验证问题的实现
Oct 09 Python
pyqt远程批量执行Linux命令程序的方法
Feb 14 Python
python django生成迁移文件的实例
Aug 31 Python
pytorch常见的Tensor类型详解
Jan 15 Python
使用Tensorflow将自己的数据分割成batch训练实例
Jan 20 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
Feb 26 Python
解决Keras使用GPU资源耗尽的问题
Jun 22 Python
Python自动化xpath实现自动抢票抢货
Sep 19 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面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
JavaScript中自定义事件用法分析
2014/12/23 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
JavaScript实现鼠标点击后层展开效果的方法
2015/05/13 Javascript
常用DOM整理
2015/06/16 Javascript
浅析JavaScript回调函数应用
2016/05/22 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
详解基于javascript实现的苹果系统底部菜单
2016/12/02 Javascript
jquery实现拖动效果(代码分享)
2017/01/25 Javascript
Nodejs搭建wss服务器教程
2017/05/24 NodeJs
VUE实现一个分页组件的示例
2017/09/13 Javascript
vue 子组件向父组件传值方法
2018/02/26 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
使用JavaScript解析URL的方法示例
2019/03/01 Javascript
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
解决vue请求接口第一次成功,第二次失败问题
2020/09/08 Javascript
[00:37]食人魔魔法师轮盘吉兆顺应全新至宝将拥有额外款式
2019/12/19 DOTA
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
python绘制条形图方法代码详解
2017/12/19 Python
Python使用zip合并相邻列表项的方法示例
2018/03/17 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
Django2 连接MySQL及model测试实例分析
2019/12/10 Python
OpenCV哈里斯(Harris)角点检测的实现
2020/01/15 Python
opencv中图像叠加/图像融合/按位操作的实现
2020/04/01 Python
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
英国经典球衣网站:Classic Football Shirts
2017/05/20 全球购物
Craghoppers德国官网:户外和旅行服装
2020/02/14 全球购物
高中生学习生活的自我评价
2013/10/09 职场文书
美工的岗位职责
2013/11/14 职场文书
个人催款函范文
2015/06/24 职场文书
检讨书之工作不认真
2019/08/14 职场文书
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android