I am trying to perform DFT on two images such that I get a full size complex valued spectrum. In order to achieve that I have written following code:
cv::Mat_<std::complex<float>> DFTReal2Complex(const cv::Mat_<float>& input)
{
cv::Mat_<float> result = cv::Mat::zeros(input.size(), input.type());
cv::dft(input, result, cv::DFT_COMPLEX_OUTPUT); //,
return result;
}
When I execute the code, I get an exception Assertion failed (!fixedType() || ((Mat*)obj)->type() == mtype) in cv::_OutputArray::create, file C:\builds\master_PackSlave-win64-vc12-shared\opencv\modules\core\src\matrix.cpp, line 2130.
If I remove DFT_COMPLEX_OUTPUT flag, the code executes fine but am looking for a complex valued spectrum. 1. Am I using DFT_COMPLEX_OUTPUT flag in a wrong way? Is there another way to do this 2. Is there any way to get a complex valued spectrum in an alternate way?