12
I have done some pre processing for dft , and i am trying to save this image by imwrite.
My cropped image has this information
output.type() 5
output.channels() 1
output.depth() 5
But everytime when i save it gives black output. I have checked old existing threads of stackoverflow but all seems not working for me. e.g. OpenCV2.3 imwrite saves black image
I have tried many color conversions and depth conversion as well but i dont know why it does not work.
std::vector<int> qualityType;
qualityType.push_back(CV_IMWRITE_JPEG_QUALITY);
qualityType.push_back(90);
Mat out1,out2;
cv::cvtColor(output, out1, CV_GRAY2BGR);
//out1.convertTo(out2,CV_8U,1./256); // i tried this too
cv::imwrite("dft1.jpg",out1,qualityType); // tried even using quality type
imshow display this image fine only problem comes when i save it.
please help
[EDIT] Maybe my dft class that i made has problem because i whenever i use dft function then the output can only work with inshow but for save it does not work.
CDftRidgeAnalyses::CDftRidgeAnalyses(void)
{
}
CDftRidgeAnalyses::~CDftRidgeAnalyses(void)
{
}
Mat CDftRidgeAnalyses::GetRidgeAnalyses(Mat inpGray)
{
Mat img = inpGray;
int WidthPadded=0,HeightPadded=0;
WidthPadded=img.cols*2;
HeightPadded=img.rows*2;
int M = getOptimalDFTSize( img.rows );
//Create a Gaussian Highpass filter 5% the height of the Fourier transform
double db = 0.05 * HeightPadded;
Mat fft = ForierTransform(img.clone(),HeightPadded,WidthPadded);
Mat ghpf = CreateGaussianHighPassFilter(Size(WidthPadded, HeightPadded), db);
Mat res;
cv::mulSpectrums(fft,ghpf,res,DFT_COMPLEX_OUTPUT);
Mat mag = GetDftToImage(res,img);
int cx = mag.cols/2;
int cy = mag.rows/2;
cv::M