我正在尝试获得局部(大小(3,3))corr值矩阵,可能移位±2像素,但结果(代码中的dst mat)当我主持两张相同的图片时(refROI和srcROI从中得到roi)相同的图片)是不正确的。首先它在左侧有最后约100个右像素,第二个在某些点上显示corr~0(应该是1到处都是1)。相似性也应始终为1,而有时更多的是0.0078125,但最小值和最大值有1.有代码:
double similarity=0,Min=0,Max=0;
int count=0;
int size=3,shiftSize=3;
int width,height;
width = floor(ref->colorMat.cols/size);
height = floor(ref->colorMat.rows/size);
Mat dst= Mat::zeros(height,width,CV_32FC1);
for(int i=shiftSize;i<width-shiftSize;i++){
for(int j=shiftSize;j<height-shiftSize;j++){
Mat result,refROI,srcROI;
refROI = ref->colorMat(Rect(j*size-shiftSize,i*size-shiftSize,size+2*shiftSize,size+2*shiftSize));
srcROI = ref->colorMat(Rect(j*size,i*size,size,size));
count++;
qDebug()<<count<<"Min: "<<Min<<"Max: "<<Max<< "similarity: "<<similarity;
matchTemplate(refROI, srcROI, result, CV_TM_CCORR_NORMED);
similarity = result.at<double>(shiftSize,shiftSize);
minMaxLoc(result,&Min,&Max);
dst.at<double>(i,j)=Max;
}
}
normalize( dst, dst, 0, 1, NORM_MINMAX, -1, Mat() );
Mat sss;
dst.copyTo(sss);
imshow("sss",sss);