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 相关文章推荐
2款Python内存检测工具介绍和使用方法
Jun 01 Python
python爬虫入门教程之点点美女图片爬虫代码分享
Sep 02 Python
Django中处理出错页面的方法
Jul 15 Python
python开启摄像头以及深度学习实现目标检测方法
Aug 03 Python
Python绘图Matplotlib之坐标轴及刻度总结
Jun 28 Python
python并发编程多进程 互斥锁原理解析
Aug 20 Python
Python 类的私有属性和私有方法实例分析
Sep 29 Python
Python 实现try重新执行
Dec 21 Python
Python定义函数实现累计求和操作
May 03 Python
Spark处理数据排序问题如何避免OOM
May 21 Python
django rest framework 自定义返回方式
Jul 12 Python
Python模块常用四种安装方式
Oct 20 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通过asort()给关联数组按照值排序的方法
2015/03/18 PHP
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
基于jquery的滚动新闻列表
2010/06/19 Javascript
HTML5之lang属性与dir属性的详解
2013/06/19 Javascript
Js nodeType 属性全面解析
2013/11/14 Javascript
基于 Docker 开发 NodeJS 应用
2014/07/30 NodeJs
jQuery中fadeOut()方法用法实例
2014/12/24 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
基于Jquery easyui 选中特定的tab
2015/11/17 Javascript
移动手机APP手指滑动切换图片特效附源码下载
2015/11/30 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
jQuery实现获取元素索引值index的方法
2016/09/18 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
2016/11/22 Javascript
JavaScript学习笔记之函数记忆
2017/09/06 Javascript
JavaScript实现学生在线做题计时器功能
2018/12/05 Javascript
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
webpack打包html里面img后src为“[object Module]”问题
2019/12/22 Javascript
vue 路由懒加载中给 Webpack Chunks 命名的方法
2020/04/24 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
[13:25]VP vs VICI (BO3)
2018/06/07 DOTA
python如何生成网页验证码
2018/07/28 Python
详解python中的数据类型和控制流
2019/08/08 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
python邮件中附加文字、html、图片、附件实现方法
2021/01/04 Python
python excel和yaml文件的读取封装
2021/01/12 Python
data:image data url 文件转为Blob上传后端的方法
2019/07/16 HTML / CSS
html5手机键盘弹出收起的处理
2020/01/20 HTML / CSS
初二生物教学反思
2014/02/03 职场文书
《春笋》教学反思
2014/04/15 职场文书
国企干部对照检查材料
2014/08/22 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
关于运动会的宣传稿
2015/07/23 职场文书
三十年再续同学情倡议书
2019/11/27 职场文书