// 通道组建立,
cv::Mat groupMats[] = {cv::Mat_<float>(sizeConvMat),
cv::Mat::zeros(sizeConvMat.size(), CV_32F)};
cv::Mat mergeMat;
// 通道合并
merge(groupMats,2,mergeMat);
// DFT变换
dft(mergeMat, mergeMat);
// 分离通道
split(mergeMat, groupMats);
// 计算幅值
magnitude(groupMats[0], groupMats[1], groupMats[0]);
cv::Mat magnitudeMat = groupMats[0].clone();
// 归一化操作幅值加1
magnitudeMat += Scalar::all(1);
// 对数变换
log(magnitudeMat, magnitudeMat);
// 归一化
normalize(magnitudeMat, magnitudeMat, 0, 1, CV_MINMAX);
// 图像类型转换
magnitudeMat.convertTo(magnitudeMat,CV_8UC1,255,0);
cv::imshow("magnitudeMat", magnitudeMat);
转载:http://blog.csdn.net/zhuwei1988