我试图将离散余弦变换函数作为赋值的一部分来实现。
要检查我的函数是否正常工作,我想在我的参数上调用cv::dct
函数,看看我是否用自己的函数得到了相同的结果。
我有这个载体:
std::vector<cv::Mat_<uchar>> vBlocks;
是包含(8 * 8)大小的矩阵的向量。我把这个函数称为:
for(size_t b=0; b<vBlocks.size(); ++b) {
vDCTBlocks[b] = dct(vBlocks[b]); // here dct is the function I coded myself
}
但是,如何调用cv::dct
函数来检查结果是否相同?
我试过了:
for(size_t b=0; b<vBlocks.size(); ++b) {
cv::dct(vBlocks[b], vBlocks[b]);
}
但是我得到以下错误:
OpenCV错误:断言失败(type == CV_32FC1 || type == CV_64FC1) 在cv :: dct中,文件E:\ pistc \ open cv \ modules \ core \ src \ dxt.cpp,第3603行 Caught :: Exceptions:E:\ pistc \ opencv \ modules \ core \ src \ dxt.cpp:3603: 错误:(-215)type == CV_32FC1 ||函数中输入== CV_64FC1 CV :: DCT
我猜这是因为我使用矩阵而不是数组作为cv::dct
的参数,但我不确定如何从这里继续。