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的迭代器与生成器实例详解
Jul 16 Python
Python类的用法实例浅析
May 27 Python
Python出现segfault错误解决方法
Apr 16 Python
Python读csv文件去掉一列后再写入新的文件实例
Dec 28 Python
利用python将pdf输出为txt的实例讲解
Apr 23 Python
解决python中无法自动补全代码的问题
Dec 04 Python
Python获取基金网站网页内容、使用BeautifulSoup库分析html操作示例
Jun 04 Python
通过PHP与Python代码对比的语法差异详解
Jul 10 Python
Keras 快速解决OOM超内存的问题
Jun 11 Python
Pytorch 使用CNN图像分类的实现
Jun 16 Python
python和go语言的区别是什么
Jul 20 Python
Python 如何实现访问者模式
Jul 28 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文件上传实例详解!!!
2007/01/02 PHP
Discuz 模板语句分析及知识技巧
2009/08/21 PHP
克隆一个新项目的快捷方式
2013/04/10 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
php中get_magic_quotes_gpc()函数说明
2017/02/06 PHP
js 学习笔记(三)
2009/12/29 Javascript
JavaScript 弹出窗体点击按钮返回选择数据的实现
2010/04/01 Javascript
jquery获取div宽度的实现思路与代码
2013/01/13 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
JavaScript极简入门教程(一):基础篇
2014/10/25 Javascript
js控制输入框获得和失去焦点时状态显示的方法
2015/01/30 Javascript
javascript等号运算符使用详解
2015/04/16 Javascript
AngularJS 自定义指令详解及示例代码
2016/08/17 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
使用iView Upload 组件实现手动上传图片的示例代码
2018/10/01 Javascript
微信小程序如何获取用户头像和昵称
2019/09/23 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
在Echarts图中给坐标轴加一个标识线markLine
2020/07/20 Javascript
Python语言的面相对象编程方式初步学习
2016/03/12 Python
Python pymongo模块常用操作分析
2018/09/01 Python
pandas通过loc生成新的列方法
2018/11/28 Python
Python判断telnet通不通的实例
2019/01/26 Python
python中turtle库的简单使用教程
2020/11/11 Python
css3 transform 3d 使用css3创建动态3d立方体(html5实践)
2013/01/06 HTML / CSS
测试驱动开发的主要步骤是什么
2014/12/10 面试题
酒店公关部经理岗位职责
2013/11/24 职场文书
分厂厂长岗位职责
2013/12/29 职场文书
2013年学期结束动员演讲稿
2014/01/07 职场文书
初一体育教学反思
2014/01/29 职场文书
干部考核评语
2014/04/29 职场文书
企业形象策划方案
2014/05/29 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
解决Vue+SpringBoot+Shiro跨域问题
2021/06/09 Vue.js