opencv从零开始——4. 离散傅里叶变换的体验
来源:互联网 发布:西部数码 域名 编辑:程序博客网 时间:2024/06/05 02:34
opencv的强大之处,从这里开始,越来越能和信号处理接轨了,赞一个。
代码:
#include <opencv2/core/core.hpp>#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream>using namespace std;using namespace cv;// "/mnt/hgfs/code_for_Linux/code_opencv/test1/pic/"int main(){ Mat srcImage = imread("/mnt/hgfs/code_for_Linux/code_opencv/test1/pic/3.jpg", 0); if (!srcImage.data) { return -1; } imshow("[灰度图]", srcImage); int m = getOptimalDFTSize(srcImage.rows); int n = getOptimalDFTSize(srcImage.cols); Mat padded; copyMakeBorder(srcImage, padded, 0, m - srcImage.rows, 0, n - srcImage.cols, BORDER_CONSTANT, Scalar::all(0)); Mat planes[] = {Mat_<float>(padded), Mat::zeros(padded.size(), CV_32F)}; Mat complexI; merge(planes, 2, complexI); dft(complexI, complexI); split(complexI, planes); magnitude(planes[0], planes[1], planes[0]); Mat magnitudeImage = planes[0]; magnitudeImage += Scalar::all(1); log(magnitudeImage, magnitudeImage); magnitudeImage = magnitudeImage(Rect(0, 0, magnitudeImage.cols & - 2, magnitudeImage.rows & - 2)); int cx = magnitudeImage.cols/2; int cy = magnitudeImage.rows/2; Mat q0(magnitudeImage, Rect(0, 0, cx, cy)); Mat q1(magnitudeImage, Rect(cx, 0, cx, cy)); Mat q2(magnitudeImage, Rect(0, cy, cx, cy)); Mat q3(magnitudeImage, Rect(cx, cy, cx, cy)); Mat tmp; q0.copyTo(tmp); q3.copyTo(q0); tmp.copyTo(q3); q1.copyTo(tmp); q2.copyTo(q1); tmp.copyTo(q2); normalize(magnitudeImage, magnitudeImage, 0, 1, NORM_MINMAX); imshow("频谱幅值", magnitudeImage); waitKey(0); return 0;}
效果如下:
------
0 0
- opencv从零开始——4. 离散傅里叶变换的体验
- OpenCV中文网站例程——离散傅里叶变换DFT
- opencv例程解读——dft(离散傅里叶变换)
- opencv 图片的离散傅里叶变换DFT
- opencv之离散傅里叶变换
- Opencv离散傅里叶变换
- OpenCV之离散傅里叶变换
- opencv:离散傅里叶变换
- C++ opencv 离散傅里叶变换
- 【OpenCV笔记 09】OpenCV中离散傅里叶变换、归一化的运用
- 5.opencv之离散傅里叶变换
- opencv学习-core-离散傅里叶变换
- 基于OpenCV完成离散傅里叶变换
- Opencv基础学习二:图片的离散傅里叶变换
- opencv学习(6)图像离散傅里叶变换的实现过程
- OpenCV学习笔记(八):图像的离散傅里叶变换
- opencv学习实现简单的图像离散傅里叶变换
- 图像的离散傅里叶变换
- Android开发adapter与Activity交互
- 被截短的随机分布与原分布的关系
- #Paper Reading# SummaRuNNer: A RNN based Sequence Model for Extractive Summarization of Documents
- PDO常用类和对象总结
- LeetCode----312. Burst Balloons(H) 动态规划
- opencv从零开始——4. 离散傅里叶变换的体验
- 二叉树中和为某一值的路径
- 51Nod 1090 3个数和为0 (二分
- 实现Sublime Text3成为静态web服务器:SublimeServer
- 关于设计模式的一些经验
- Ceilometr: 9、Gnocchi对接Ceilometer
- Linux网络编程之I/O复用
- iOS之UIDivice的使用
- 夜神模拟器连接eclipse时候出现unable to connect解决方案