level 5
程序源码
#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include <iostream>
using namespace cv;
using namespace std;
void do_dft(Mat& source, Mat& destination)
{
Mat originalComplex[2] = { source,Mat::zeros(source.size(),CV_32F) };
Mat dftReady;
merge(originalComplex, 2, dftReady);
Mat dftOfOriginal;
dft(dftReady, dftOfOriginal,DFT_COMPLEX_OUTPUT);
destination = dftOfOriginal;
}
void show_dft(Mat& source) {
Mat dftarray[2] = { Mat::zeros(source.size(),CV_32F),Mat::zeros(source.size(),CV_32F) };
split(source, dftarray);
Mat dft_mag;
magnitude(dftarray[0], dftarray[1], dft_mag);
dft_mag += Scalar::all(1);
log(dft_mag, dft_mag);
normalize(dft_mag, dft_mag, 0, 1, NORM_MINMAX);
imshow("dft", dft_mag);
waitKey();
}
int main(int argv, char** argc) {
Mat original = imread(argc[1], COLOR_BGR2GRAY);
Mat originalFloat;
original.convertTo(originalFloat, CV_32FC1, 1.0 / 255.0);
Mat dftOfOriginal;
do_dft(originalFloat, dftOfOriginal );
show_dft(dftOfOriginal);
return 0;
}
2019年01月03日 13点01分

