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 判断一个进程是否存在
Apr 09 Python
Python3.x和Python2.x的区别介绍
Feb 12 Python
python list排序的两种方法及实例讲解
Mar 20 Python
Python字符串、整数、和浮点型数相互转换实例
Aug 04 Python
使用Scrapy爬取动态数据
Oct 21 Python
django页面跳转问题及注意事项
Jul 18 Python
Flask框架学习笔记之消息提示与异常处理操作详解
Aug 15 Python
python实现FTP循环上传文件
Mar 20 Python
通过python 执行 nohup 不生效的解决
Apr 16 Python
Python+OpenCV检测灯光亮点的实现方法
Nov 02 Python
python如何调用php文件中的函数详解
Dec 29 Python
python日志通过不同的等级打印不同的颜色(示例代码)
Jan 13 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/12/10 PHP
PHP结合jQuery.autocomplete插件实现输入自动完成提示的功能
2015/04/27 PHP
如何正确配置Nginx + PHP
2016/07/15 PHP
laravel数据库查询结果自动转数组修改实例
2021/02/27 PHP
javascript 函数声明与函数表达式的区别介绍
2013/10/05 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
js完美的div拖拽实例代码
2014/01/22 Javascript
ie8下修改input的type属性报错的解决方法
2014/09/16 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
JavaScript中计算网页中某个元素的位置
2015/06/10 Javascript
浅析BootStrap模态框的使用(经典)
2016/04/29 Javascript
js多功能分页组件layPage使用方法详解
2016/05/19 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
关于layui 弹出层一闪而过就消失的解决方法
2019/09/09 Javascript
Python中的作用域规则详解
2015/01/30 Python
Python脚本实现集群检测和管理功能
2015/03/06 Python
Python 使用PIL numpy 实现拼接图片的示例
2018/05/08 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
python中将\\uxxxx转换为Unicode字符串的方法
2018/09/06 Python
python实现函数极小值
2019/07/10 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
2019/07/15 Python
python取均匀不重复的随机数方式
2019/11/27 Python
Python SSL证书验证问题解决方案
2020/01/13 Python
Python开发.exe小工具的详细步骤
2021/01/27 Python
Html5新增标签有哪些
2017/04/13 HTML / CSS
Europcar意大利:汽车租赁
2019/07/07 全球购物
25道Java面试题集合
2013/05/21 面试题
优秀大学生推荐信范文
2013/11/28 职场文书
即将毕业大学生自荐信
2014/01/24 职场文书
公司会计岗位职责
2014/02/13 职场文书
规范化管理年活动总结
2014/08/29 职场文书
竞聘报告优秀范文
2014/11/06 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
湘江北去观后感
2015/06/15 职场文书
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
2022/02/12 Redis