无法使用cvMerge,DFT进行转换

时间:2011-11-30 12:05:34

标签: opencv merge dft

我试图制作一个单一通道图像的dft,并且由于cvDft期望复杂的值,我被建议将原始图像与另一个图像合并为全0,因此最后一个图像将被视为虚部。< / p>

使用cvmerge函数时出现问题,

Mat tmp = imread(filename,0);

if( tmp.empty() )
    {cout << "Usage: dft <image_name>" << endl;
    return -1;}
Mat Result(tmp.rows,tmp.cols,CV_64F,2);
Mat tmp1(tmp.rows,tmp.cols,CV_64F, 0);
Mat image(tmp.rows,tmp.cols,CV_64F,2);
cvMerge(tmp,tmp1,image);`

它给了我下一个错误:无法将cvMAt转换为cvArr

有人可以帮助我吗?谢谢!

1 个答案:

答案 0 :(得分:1)

1)您似乎正在混合2种不同风格的opencv代码 cv::Mat( - Mat)是新版本opencv的c ++类,cvMerge是旧版opencv的c函数。

而不是使用cvmerge使用merge

2)您尝试合并tmp类型的矩阵(CV_8U)(可能)与CV_64F合并    使用convertTo将tmp作为CV_64F

3)为什么你的Result&amp; image席位(目标席位)初始化为cv::Scalar(2)?我认为你滥用了约束参数。有关详细信息,请参阅here

4)你image mat是单通道垫,你想要它作为2通道垫(如问题中所述),将声明更改为

Mat image(tmp.rows,tmp.cols,CV_64FC2);