opencv - 无法使用 cvMerge、DFT 进行转换

标签 opencv merge dft

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

我的问题是在使用 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)看起来你混合了2种不同风格的opencv代码cv::Mat (-Mat) 是来自新版opencv的c++类,cvMerge是老版本opencv的一个c函数。

而不是使用 cvmerge使用 merge

2)您正在尝试合并 tmp 类型的矩阵( CV_8U ) (可能)带有 CV_64F 使用 convertTo将 tmp 设为 CV_64F

3) 为什么你的Result & image垫子(目标垫子)初始化为 cv::Scalar(2) ?我认为您在滥用构造函数参数。见 here了解更多信息。

4) 你是 image mat 是单 channel 垫,您希望它作为 2 channel 垫(如问题中所述),将声明更改为

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

关于opencv - 无法使用 cvMerge、DFT 进行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8325689/

相关文章:

Python - 使用 OpenCV 将字节图像转换为 NumPy 数组

c++ - 从 wiki 实现白平衡算法

c++ - 通过本地网络中的OpenCV(C++)实时流式传输图像

visual-studio-2010 - TFS 合并未更改的文件,甚至不在更改集中

使用 svn.pushmergeinfo 进行 merge 的 git-svn 工作流程

c++ - 如何在opencv中指向一个垫子?

r - 合并具有不同行数和不同列的数据框

iphone - OpenCV cv::dft()iOS断言错误

python - python中的DFT矩阵

signal-processing - 带或不带窗口的 KISS FFT 输出