热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

opencvDFT

本文主要使用DFT相关函数实现对水平文本和旋转文本的DFT变换,在幅度谱中识别文本的变换,从而为图像旋转的检测和校正做准备。#includeopenc

本文主要使用DFT相关函数实现对水平文本和旋转文本的DFT变换,在幅度谱中识别文本的变换,从而为图像旋转的检测和校正做准备。

#include "opencv2/core/core.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp"
#include using namespace cv;
using namespace std;void help(char* progName)
{cout <}int main(int argc, char ** argv)
{help(argv[0]);const char* filename &#61; argc >&#61;2 ? argv[1] : "lena.jpg";/* Mat I &#61; imread(filename, CV_LOAD_IMAGE_GRAYSCALE);*/Mat I &#61; imread(filename, 0);if( I.empty()){cout<<"Can&#39;t load image!"<(padded), Mat::zeros(padded.size(), CV_32F)};Mat complexI;merge(planes, 2, complexI);//把0值添加到另一个扩充的平面//这样处理的结果可以适合原来的矩阵dft(complexI, complexI);//计算这个幅度并转换到log领域//log(1 &#43; sqrt(Re(DFT(I))^2 &#43; Im(DFT(I))^2))//planes[0] &#61; Re(DFT(I)&#xff09;实部, planes[1] &#61; Im(DFT(I))虚部split(complexI, planes); //planes[0] &#61; magnitude幅度值magnitude(planes[0], planes[1], planes[0]);Mat magI &#61; planes[0];//转换到log运算magI &#43;&#61; Scalar::all(1); log(magI, magI);//如果它由奇数个行或奇数个列&#xff0c;截取频谱magI &#61; magI(Rect(0, 0, magI.cols & -2, magI.rows & -2));//重新分配傅里叶变换后图像的象限从而让图像原始(0&#xff0c;0)位置在图像中心int cx &#61; magI.cols/2;int cy &#61; magI.rows/2;Mat q0(magI, Rect(0, 0, cx, cy)); // Top-Left -每个象限创建一个感兴趣区域Mat q1(magI, Rect(cx, 0, cx, cy)); // Top-RightMat q2(magI, Rect(0, cy, cx, cy)); // Bottom-LeftMat q3(magI, Rect(cx, cy, cx, cy)); // Bottom-Right//交换Ⅱ和Ⅳ象限位置(Top-Left with Bottom-Right)Mat tmp; q0.copyTo(tmp);q3.copyTo(q0);tmp.copyTo(q3);//交换Ⅰ和Ⅲ象限位置(Top-Right with Bottom-Left)q1.copyTo(tmp); q2.copyTo(q1);tmp.copyTo(q2);// Transform the matrix with float values into a// viewable image form (float between values 0 and 1).normalize(magI, magI, 0, 1, CV_MINMAX); imshow("Input Image" , I ); imshow("spectrum magnitude", magI);waitKey();return 0;
}












推荐阅读
  • SpringBoot uri统一权限管理的实现方法及步骤详解
    本文详细介绍了SpringBoot中实现uri统一权限管理的方法,包括表结构定义、自动统计URI并自动删除脏数据、程序启动加载等步骤。通过该方法可以提高系统的安全性,实现对系统任意接口的权限拦截验证。 ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • 高质量SQL书写的30条建议
    本文提供了30条关于优化SQL的建议,包括避免使用select *,使用具体字段,以及使用limit 1等。这些建议是基于实际开发经验总结出来的,旨在帮助读者优化SQL查询。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文介绍了如何使用MATLAB调用摄像头进行人脸检测和识别。首先需要安装扩展工具,并下载安装OS Generic Video Interface。然后使用MATLAB的机器视觉工具箱中的VJ算法进行人脸检测,可以直接调用CascadeObjectDetector函数进行检测。同时还介绍了如何调用摄像头进行人脸识别,并对每一帧图像进行识别。最后,给出了一些相关的参考资料和实例。 ... [详细]
  • Parity game(poj1733)题解及思路分析
    本文是对题目"Parity game(poj1733)"的解题思路进行分析。题目要求判断每次给出的区间内1的个数是否和之前的询问相冲突,如果冲突则结束。本文首先介绍了离线算法的思路,然后详细解释了带权并查集的基本操作。同时,本文还对异或运算进行了学习,并给出了具体的操作步骤。最后,本文给出了完整的代码实现,并进行了测试。 ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
  • 1.webkit内核中的一些私有的meta标签,这些meta标签在开发webapp时起到非常重要的作用(1) ... [详细]
  • 7.4 基本输入源
    一、文件流1.在spark-shell中创建文件流进入spark-shell创建文件流。另外打开一个终端窗口,启动进入spark-shell上面在spark-shell中执行的程序 ... [详细]
author-avatar
JQLNo1xinfinite
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有