假设我们有一幅图像,图像中的文本被旋转了一个未知的角度。为了对文字进行角度的校正,我们需要完成如下几个步骤:

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)

第二步、计算包含了被旋转文本的最小边框

#计算包含了旋转文本的最小边框

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中text怎么旋转字体_Python+OpenCV实现旋转文本校正方式相关推荐

  1. python中text函数的语法_Python语法大全(持续更新中ing)

    1.type()函数可以返回任何Python定义的数据类型. Python提供了一些数字类型转换函数:int().long().float().complex().整数.长整数和浮点数可以通过comp ...

  2. python中怎么调整代码字体格式,pythondocx如何在文本和制表符之间分别更改字体大小...

    我正在尝试使用python docx在第一页中创建表,但是当我试图修改标题的字体大小时,表大小也会改变,即使我尝试在表中再更改一个字体大小 设置.我该怎么做?在def Firstpage(): tit ...

  3. [转载] python中for语句用法_详解Python中for循环的使用_python

    参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...

  4. python中for语句用法_详解Python中for循环的使用_python

    这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...

  5. python中异或怎么算_python 异或运算的前提_异或运算公式

    Python基础(10)–数字-Python-第七城市 609x288 - 73KB - JPEG Python基础(10)--数字_资讯_突袭网 609x288 - 33KB - JPEG pyth ...

  6. python中text格式_python读取各种格式的文本

    1. 读取word文本 Python可以利用python-docx模块处理word文档,处理方式是面向对象的,python-docx模块会把word文档中的段落.文本.字体等都看做对象,对对象进行处理 ...

  7. python中的figure什么意思_Python Matplotlib.figure.Figure.text()用法及代码示例

    Matplotlib是Python中的一个库,它是数字的-NumPy库的数学扩展. Figure模块提供了顶层Artist,即Figure,其中包含所有绘图元素.此模块用于控制所有图元的子图和顶层容器 ...

  8. python给图片加半透明水印_Python+OpenCV为图片添加中文水印与图片水印

    OpenCV中在图片上输出中文一般有两种解决办法: 一种需要借助FreeType库实现.FreeType库是一个完全免费(开源)的.高质量的且可移植的字体引擎,它提供统一的接口来访问多种字体格式文件. ...

  9. python中的gui界面编程_python应用系列教程——python的GUI界面编程Tkinter全解

    全栈工程师开发手册 (作者:栾鹏) python的GUI界面编程,常用的几个python库包含如下: Tkinter: Tkinter 模块(Tk 接口)是 Python 的标准 Tk GUI 工具包 ...

最新文章

  1. 推荐并简要分析一个silverlight的相册DEMO--ImageSnipper(V2)
  2. Django部署(Apache)
  3. flutter项目迁移空安全
  4. 更改Tomcat虚拟内存大小
  5. 第一篇:SpringCloud 构建微服务系统之服务注册和发现(consul)
  6. 埃氏筛法的一般写法(区间筛法)
  7. 我愿意参加Qcon 2010大会,你愿意吗?
  8. [7.14更新日志]CRP编译缓存和海外构建让编译健步如飞!
  9. Windows核心编程条件变量
  10. ILI9486 和 stm32F407 cortex-M4
  11. 采用jqueryUI创建日期选择器
  12. java string与byte互转
  13. html5音乐播放器格式midi,html5音频标签是否非正式地包含.mid(MIDI)?
  14. matlab errorbar 例子,科学网—【MATLAB】如何画水平errorbar - 叶瑞杰的博文
  15. 分析下这个LC振荡电路图
  16. kali linux 清华源_Kali Linux 更新源
  17. Flink中水位线Watermark
  18. html引用less文件报错,vue-cli import less文件报错
  19. 科学计算机调成了fx,科学计算器怎么编程
  20. MATLAB clc clear

热门文章

  1. dart系列之:如丝滑般柔顺,操作文件和目录
  2. Lambda表达式最佳实践
  3. JDK12的五大重要新特性
  4. Leet Code OJ 235. Lowest Common Ancestor of a Binary Search Tree [Difficulty: Easy]
  5. MySQL事务隔离级别的实现原理
  6. Spring Boot——RabbitMQ
  7. java.lang.reflect.Constructor
  8. mycat从0到成功进行分表操作
  9. Effective Java之坚持使用Overide注解(三十六)
  10. 【四种解法】剑指 Offer 39. 数组中出现次数超过一半的数字