OpenCV 中獲取圖像或矩陣最大、最小值的簡便方法


C++: void minMaxLoc(InputArray src, double* minVal, double* maxVal=0, Point* minLoc=0, Point* maxLoc=0, InputArray mask=noArray() )

C++: void minMaxLoc(const SparseMat& a, double* minVal, double* maxVal, int* minIdx=0, int*maxIdx=0 )


Opencv中的minMaxLoc()函數可以在一幅圖像上查找最大最小值及其位置坐標。
里面參數很多,比如最大值maxVlaue、最小值minValue、最大值位置maxLoc、最小值位置minLoc等。
看起來很繁瑣但是用起來卻很方便,一些不需要的參數,在調用時直接設置為0即可。
函數中,最后一個參數是mask,默認為noArray()。這是一個很有用的參數。
用法也很簡單,先預設一個矩陣mask,其大小、數據類型與src一致,每個像素值為0。如果像搜索src某個局部區域的最大最小值,
只需要把mask對應區域設置為大於0的數值即可。下面我們看一個示例:

int main()
{
    Mat img=imread("D:/Qt/MyImage/building.jpg",0);

    Mat mask(img.rows,img.cols,img.type(),Scalar::all(0));
    mask(Rect(150,50,100,100))=255 ;//設定搜索區域
    imshow("mask",mask);

    imshow("img",img);
    double maxv;
    minMaxLoc(img,0,&maxv,0,0,mask);
    cout<<"maxvalue="<<maxv<<endl;
    waitKey();
    return 0;
}

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM