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编程中的for循环语句学习教程
Oct 14 Python
Python第三方库xlrd/xlwt的安装与读写Excel表格
Jan 21 Python
Python常用算法学习基础教程
Apr 13 Python
Python编程django实现同一个ip十分钟内只能注册一次
Nov 03 Python
浅谈pycharm出现卡顿的解决方法
Dec 03 Python
Tensorflow设置显存自适应,显存比例的操作
Feb 03 Python
从python读取sql的实例方法
Jul 21 Python
Python实现一个优先级队列的方法
Jul 31 Python
matplotlib基础绘图命令之imshow的使用
Aug 13 Python
基于python tkinter的点名小程序功能的实例代码
Aug 22 Python
Python读取Excel一列并计算所有对象出现次数的方法
Sep 04 Python
matplotlib之多边形选区(PolygonSelector)的使用
Feb 24 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截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
2016/04/04 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
PHP实现函数内修改外部变量值的方法示例
2018/12/28 PHP
Javascript调用XML制作连动下拉列表框
2006/06/25 Javascript
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
ASP.NET中AJAX 调用实例代码
2012/05/03 Javascript
jquery实现下拉菜单的二级联动利用json对象从DB取值显示联动
2014/03/27 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
JS截取与分割字符串常用技巧总结
2015/11/10 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
2015/11/21 Javascript
jquery实现简单的遮罩层
2016/01/08 Javascript
jquery实现左右无缝轮播图
2020/07/31 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
微信小程序实现折叠面板
2018/01/31 Javascript
vue iview组件表格 render函数的使用方法详解
2018/03/15 Javascript
解决JavaScript中0.1+0.2不等于0.3问题
2018/10/23 Javascript
vue2.0实现列表数据增加和删除
2020/06/17 Javascript
[51:26]VP vs VG 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
python实现代理服务功能实例
2013/11/15 Python
Python中json格式数据的编码与解码方法详解
2016/07/01 Python
python实现感知器算法详解
2017/12/19 Python
Python基于tkinter canvas实现图片裁剪功能
2020/11/05 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
HTML5 CSS3实现一个精美VCD包装盒个性幻灯片案例
2014/06/16 HTML / CSS
英国著名的药妆网站:Escentual
2016/07/29 全球购物
四方通行旅游网:台湾订房、出国旅游
2017/09/20 全球购物
介绍Java的内部类
2012/10/27 面试题
母婴店促销方案
2014/03/05 职场文书
院党委组织查摆问题对照检查材料思想汇报2014
2014/10/08 职场文书
2014年教研工作总结
2014/12/06 职场文书
电影地道战观后感
2015/06/04 职场文书
田径运动会通讯稿
2015/07/18 职场文书
《黄道婆》教学反思
2016/02/22 职场文书
范文之农村基层党建工作报告
2019/10/24 职场文书