//This program is for learning DFT.
//Version: VS2015 + OpenCV3.1.0
//Author: Bandary Wang
//Date: 2016/8/10
#include<opencv2/opencv.hpp>
#include<iostream>
using namespace cv;
int main()
{
Mat srcImage = imread("1.jpg", 0);
if (!srcImage.data) { printf("There is something wrong when reading the image! \n"); return false; }
imshow("srcImage", srcImage);
//broaden the 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));
//prepare some memory room for DFT
Mat planes[] = { Mat_<float>(padded), Mat::zeros(padded.size(), CV_32F) };
Mat complexI;
merge(planes, 2, complexI);
//DFT
dft(complexI, complexI);
//把复数转变为幅值
split(complexI, planes);
magnitude(planes[0], planes[1], planes[0]);
Mat magnitudeImage = planes[0];
//进行对数尺度缩放
magnitudeImage += Scalar::all(
OpenCV学习笔记(八):图像的离散傅里叶变换
最新推荐文章于 2024-06-05 20:45:54 发布
本文是关于OpenCV学习的笔记,主要探讨了图像的离散傅里叶变换。通过实例展示了如何使用OpenCV库在Visual Studio环境中实现这一操作,并结合图形结果进行分析。参考书籍《OpenCV3编程入门》提供了深入的理解。

最低0.47元/天 解锁文章
536

被折叠的 条评论
为什么被折叠?



