我已经为dft做了一些预处理,我试图通过imwrite保存这个图像.
我的裁剪图像有此信息
output.type() 5
output.channels() 1
output.depth() 5
Run Code Online (Sandbox Code Playgroud)
但每当我保存它时会产生黑色输出.我已经检查了堆栈流的旧现有线程,但似乎都不适合我.例如 OpenCV2.3 imwrite保存黑色图像
我也尝试了很多颜色转换和深度转换,但我不知道为什么它不起作用.
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
Run Code Online (Sandbox Code Playgroud)
imshow显示这个图像很好只有问题来我保存它.
请帮忙
[编辑]也许我制作的dft类有问题,因为每当我使用dft函数时输出只能用于inshow但是为了保存它不起作用.
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 …Run Code Online (Sandbox Code Playgroud)