图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601

对图像进行旋转矫正,关键是要获取旋转角度是多少!获取了旋转角度就可以用仿射变换对图像进行矫正,图像旋转的代码可以参考我的博文图像旋转的MATLAB和OpenCV源码_昊虹图像算法-CSDN博客

旋转角度怎么获取?可以对图像作傅里叶变换获取这个角度,具体怎么求,请听我慢慢道来!

文本图像的明显特征就是存在分行间隔,那么行与文字之间这个灰度值变化就不如真正的文字及文字间的变化剧烈,那么相应的这些地方的频谱值也低,即频谱的低谱部分,因为傅里叶变换就是表征图像各点的变化频率的嘛~当文本图像旋转时,基频域中的频谱也会随之改变,那么我就可以根据这一特点来计算这个角度。

具体的步骤如下:

⑴读取图像,读出的同时转化为灰度图像,代码如下:

代码中用到的图像的下载链接为:text2.jpg_免费高速下载|百度网盘-分享无限制

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

⑵图像DFT尺寸变换,快速傅里叶变换是基于图像尺寸是2、3或5的倍数完成的,因此对于输入源图像,首先应将其变换成DFTSize,OpenCV中提供了函数getOptimalDFTSize()来实现尺寸转换。

图像DFT尺寸转换代码下如下:

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

运行结果如下图所示:

⑶DFT变换,源代码如下:具体的原理可以参考我写的博文在OpenCV环境下写的灰度图像二维傅里叶换,幅值计算,频谱平移和将数值归一化到0到255区间的四个函数_昊虹图像算法-CSDN博客

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

运行结果如下图所示

⑷频域中心移动

提问:为什么要进行频域中心的移动?答案在我的博文http://blog.csdn.net/wenhao_ir/article/details/51689960

我这里对这个问题再补充说几句吧!
傅里叶变换得到的低频部分在边缘角中,高频部分位于图像中心,对于倾斜文本图像,我们更关心的是图像中的低频部分,因此需要将其与高频部分互换中心。

代码如下:

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

运行结果如下图所示:

⑸倾斜角检测。经过频域中心移动后,由上图可以看出,只需要检测出图像中直线的倾斜角就可以对旋转文本进行校正。计算直线倾斜角有多种方法,这里采用霍夫变换线 检测方法进行直线倾斜角的计算,首先将傅里叶变换后的频谱图进行固定二值化处理,这里阈值的选择和场景有很大关系,要根据实际应用场景进行合理调整;然后根据霍夫变换检测直线的步骤来完成图像中的直线检测,具体霍夫变换的原理我后面会写博文介绍;直线检测完了后计算图像直线的角度,然后用这个角度对原图进行仿射变换矫正。

倾斜角检测的代码如下:

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

运行结果如下图所示:

实际上,这幅图像我在美图秀秀中旋转了20度左右,可见,程序得出的角度是非常OK的!

⑹仿射变换矫正。对得到的线角度计算旋转矩阵,利用仿射变换完成旋转文本矫正。

仿射变换矫正代码如下:

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

运行结果如下图所示:

可见,矫正的效果是很好的。

最后再给大家一个完整版的代码吧!

代码中用到的图像的下载链接为:text2.jpg_免费高速下载|百度网盘-分享无限制

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

代码请访问0031-在OpenCV环境下做旋转文本图像的矫正!_清溪算法-CSDN博客获取

图像处理开发需求、图像处理接私活挣零花钱,请加微信/QQ 2487872782
图像处理开发资料、图像处理技术交流请加QQ群,群号 271891601

利用OpenCV实现旋转文本图像矫正的原理及OpenCV代码相关推荐

  1. python中text怎么旋转字体_Python+OpenCV实现旋转文本校正方式

    假设我们有一幅图像,图像中的文本被旋转了一个未知的角度.为了对文字进行角度的校正,我们需要完成如下几个步骤: 1.检测出图中的文本范围 2.计算出文本被旋转的角度 3.将图像旋转特定的角度 第一步.读 ...

  2. 利用Canny边缘检测算子进行边缘检测的原理及OpenCV代码实现

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 Canny算子是John Canny在1986年 ...

  3. 利用机器学习分析脑电数据(原理分析+示例代码+快速上手)

    由于本人对于脑机接口以及脑电技术的极度爱好(其实目的是:是把U盘插到大脑里,然后就不用学习了哈哈哈哈),近几月看了较多这方面的内容,变打算写下博客总结分析一下. 目录 一.  机器学习分析简介 二.机 ...

  4. OpenCV绘图和文本输出功能的实例(附完整代码)

    OpenCV绘图和文本输出功能的实例 OpenCV绘图和文本输出功能的实例 OpenCV绘图和文本输出功能的实例 #include "opencv2/core.hpp" #incl ...

  5. 经验 | OpenCV图像旋转的原理与技巧

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|OpenCV学堂 01 引言 初学图像处理,很多人遇到的 ...

  6. OpenCV图像旋转的原理与技巧

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 转自|OpenCV学堂 01 引言 初学图像处理,很多人遇到的第一 ...

  7. OpenCV实现基于傅里叶变换(FFT)的旋转文本校正(文字方向检测)

    OpenCV实现基于傅里叶变换的旋转文本校正 from: http://johnhany.net/2013/11/dft-based-text-rotation-correction/ 发布于 201 ...

  8. 文本检测实战:使用OpenCV实现文本检测(EAST 文本检测器)

    在本教程中,您将学习如何使用 OpenCV 使用 EAST 文本检测器检测图像中的文本. EAST 文本检测器要求我们在我们的系统上运行 OpenCV 3.4.2 或 OpenCV 4 . 论文原文: ...

  9. opencv文字旋转 putText旋转90°

    文章目录 ● opencv文字旋转 putText旋转90° 1. cv::getTextSize获取文字的尺寸textSize 2. 设置文字图像textImg尺寸格式 3. 将文字绘制在文字图像t ...

最新文章

  1. OpenCV像素点处理
  2. Web Deployment Projects with Visual Studio 2005
  3. 应用系统开发思想的变迁
  4. View的缩放操作--CGAffineTransformMakeScale:
  5. php 图片无法删除,php如何删除上传的图片
  6. 我听到了一个熟息的GuanDan声音
  7. nginx访问日志常用变量
  8. [K/3Cloud]如何解决kdpkg无法部署到业务站点的问题
  9. 什么是云存储 API
  10. STC8H8K系列汇编51实战——STC8H8K64U跑马灯(51版)
  11. 最详细的制作正式版10.11 OS X El Capitan 安装U盘的方法
  12. 关于JavaScript打印去掉页眉页脚
  13. mac 安装typescript
  14. xpath中的position()函数使用
  15. MCAL系列介绍04-GPT
  16. 记录~OPENCV读图失败的三种情况,其中一种情况罕见
  17. 解决Expected all tensors to be on the same device, but found at least two devices, cuda:0
  18. 信号处理之FFT(如何求幅度、相位、画频谱图)
  19. 今天,我们来深挖一位链游和NFT界的「隐藏大佬」
  20. 21. 反爬工程师都会用的手段,IP限制反爬 - 爬虫训练场

热门文章

  1. python常用内置函数总结-Python 常用内置函数
  2. python中的装饰器有哪些-Python中的@函数装饰器到底是什么?
  3. python比c语言好学吗-对于初学者而言,python和 c语言先学哪个好
  4. python代码大全表解释-【初学】Python异常代码含义对照表
  5. 快速记忆python函数-【速学速记】Python 列表生成式的进化:生成器
  6. python编程经典案例-精心整理!9个 Python 实用案例分享
  7. python装饰器原理-python装饰器原理与用法深入详解
  8. python期末考试题及答案翻译-[译]Python面试中8个必考问题
  9. python学习手册视频教程-Python学习精品教程,视频书籍打包下载
  10. python基础知识点大全-【python基础学习】基础重点难点知识汇总