dft函数调用总是抛出异常
opencv吧
全部回复
仅看楼主
level 5
幻城之音 楼主
OpenCV(4.0.0) Error: Assertion failed (type == CV_32FC1 || type == CV_32FC2 || type == CV_64FC1 || type == CV_64FC2) in cv::dft, file c:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\dxt.cpp, line 3335
求指教
2019年01月03日 13点01分 1
level 5
幻城之音 楼主
程序源码
#include "opencv2/core.hpp"
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include <iostream>
using namespace cv;
using namespace std;
void do_dft(Mat& source, Mat& destination)
{
Mat originalComplex[2] = { source,Mat::zeros(source.size(),CV_32F) };
Mat dftReady;
merge(originalComplex, 2, dftReady);
Mat dftOfOriginal;
dft(dftReady, dftOfOriginal,DFT_COMPLEX_OUTPUT);
destination = dftOfOriginal;
}
void show_dft(Mat& source) {
Mat dftarray[2] = { Mat::zeros(source.size(),CV_32F),Mat::zeros(source.size(),CV_32F) };
split(source, dftarray);
Mat dft_mag;
magnitude(dftarray[0], dftarray[1], dft_mag);
dft_mag += Scalar::all(1);
log(dft_mag, dft_mag);
normalize(dft_mag, dft_mag, 0, 1, NORM_MINMAX);
imshow("dft", dft_mag);
waitKey();
}
int main(int argv, char** argc) {
Mat original = imread(argc[1], COLOR_BGR2GRAY);
Mat originalFloat;
original.convertTo(originalFloat, CV_32FC1, 1.0 / 255.0);
Mat dftOfOriginal;
do_dft(originalFloat, dftOfOriginal );
show_dft(dftOfOriginal);
return 0;
}
2019年01月03日 13点01分 2
level 5
幻城之音 楼主
do_dft中的dft抛出异常
2019年01月03日 13点01分 3
level 5
幻城之音 楼主
dd
2019年01月03日 13点01分 4
level 5
幻城之音 楼主
dd
2019年01月03日 13点01分 5
level 5
幻城之音 楼主
dd
2019年01月04日 02点01分 6
level 5
幻城之音 楼主
dd
2019年01月04日 13点01分 7
level 5
幻城之音 楼主
dd
2019年01月04日 13点01分 8
请问您的问题解决了吗,我的也显示这个错误
2020年09月26日 12点09分
level 9
报错已经告诉你是Mat矩阵的数据类型有问题,你自己检查一下是不是通道数量出错了
2019年01月05日 01点01分 10
1