Opencv minMaxLoc无法正常工作

时间:2017-09-05 08:19:47

标签: opencv

我正在尝试获得局部(大小(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);

compare result Console output

0 个答案:

没有答案