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使用内存zipfile对象在内存中打包文件示例
Apr 30 Python
Python中的lstrip()方法使用简介
May 19 Python
python实现文件路径和url相互转换的方法
Jul 06 Python
Windows安装Python、pip、easy_install的方法
Mar 05 Python
Python解决八皇后问题示例
Apr 22 Python
Python使用Pickle库实现读写序列操作示例
Jun 15 Python
详解如何用python实现一个简单下载器的服务端和客户端
Oct 28 Python
利用OpenCV和Python实现查找图片差异
Dec 19 Python
基于python调用psutil模块过程解析
Dec 20 Python
Django实现whoosh搜索引擎使用jieba分词
Apr 08 Python
python网络编程:socketserver的基本使用方法实例分析
Apr 09 Python
Python 解决空列表.append() 输出为None的问题
May 23 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
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
2014/11/28 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
JavaScript 对象、函数和继承
2009/07/07 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
jQuery如何跳转到另一个网页 就这么简单
2016/12/28 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
详解50行代码,Node爬虫练手项目
2019/04/22 Javascript
小程序实现横向滑动日历效果
2019/10/21 Javascript
vue基本使用--refs获取组件或元素的实例
2019/11/07 Javascript
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
vue中使用router全局守卫实现页面拦截的示例
2020/10/23 Javascript
[02:53]DOTA2英雄昆卡基础教程
2013/11/25 DOTA
进一步理解Python中的函数编程
2015/04/13 Python
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
Python实现的最近最少使用算法
2015/07/10 Python
Python实现向服务器请求压缩数据及解压缩数据的方法示例
2017/06/09 Python
Python之Scrapy爬虫框架安装及简单使用详解
2017/12/22 Python
对Python中range()函数和list的比较
2018/04/19 Python
python实现搜索文本文件内容脚本
2018/06/22 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
Python中的几种矩阵乘法(小结)
2019/07/10 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
2020/02/11 Python
利用python+ffmpeg合并B站视频及格式转换的实例代码
2020/11/24 Python
html5使用canvas实现图片下载功能的示例代码
2017/08/26 HTML / CSS
HTML5中的新元素介绍
2008/10/17 HTML / CSS
Parts Express:音频、视频和扬声器的第一来源
2017/04/25 全球购物
葬礼司仪主持词
2014/03/31 职场文书
苏州园林导游词
2015/02/03 职场文书
2015年计生协会工作总结
2015/04/24 职场文书
2015年幼儿园德育工作总结
2015/05/25 职场文书
小学数学教师研修日志
2015/11/13 职场文书
演讲稿之感恩老师(三篇范文)
2019/09/06 职场文书
Java 在生活中的 10 大应用
2021/11/02 Java/Android