phaseCorrelate函数有问题。我有2个立体图像,我想找出它们之间的偏移。两种图像的分辨率均为1280 x 960像素。 这是一个代码段:
Mat left, right, leftgrey, rightgrey;
left = imread("1_image000080.tif", -1);
right = imread("2_image000080.tif", -1);`
left.convertTo(leftgrey, CV_32F);
right.convertTo(rightgrey, CV_32F);
createHanningWindow(hann, Size(getOptimalDFTSize(left.cols), getOptimalDFTSize(left.rows)), CV_32F);
Point2d pt = phaseCorrelate(leftgrey, rightgrey, hann, &responce);
此代码有效。但我想剪切此图像。我想从左边开始从点(0,0)剪切y方向上的前40个像素,而我想从右边的图像剪切y方向上的最后40个像素。因此,我在代码中添加了以下内容:
Rect RoiR = Rect(Point2i(0, 0), Point2i(1280, 920));
Rect RoiL= Rect(Point2i(0, 40), Point2i(1280, 960));
left = left(RoiL);
right = right(RoiR);
但是当我这样做时,我得到一个错误: OpenCV(3.4.1)错误:cv :: phaseCorrelate,file .... \ opencv \ modules \ imgproc \ src \ phasecorr.cpp,529行中的声明失败(src1.size == window.size)
我还尝试了另一对图像,它们的分辨率为800 x 815,但没有裁切,但是随后出现相同的错误。我想这与汉宁窗有什么关系吗? 有人知道吗,那是怎么回事?