Opencv---計算影象直方圖方差和均值
阿新 • • 發佈:2018-12-27
Abstrcat:本文主要講解如何計算影象直方圖的方差和均值
1.求解一個影象的直方圖,原圖需要為灰度圖,程式碼如下:(首先需要申明通道和直方圖的範圍)
const int channels[1]={0};
const int histSize[1]={256};
float hranges[2]={0,255};
const float* ranges[1]={hranges};
MatND hist;
Mat img = imread("....",0); //讀取圖片
calcHist(&img,1,channels,Mat(),hist,1,histSize,ranges);
直方圖的結果儲存在hist裡面。
我們對hist求取均值和方差,opencv有專門的函式可以求取均值和方差,如下所示:
Mat convr, Mean;
meanStdDev(hist.rowRange(0,255), convr, Mean); // 代表求取直方圖0到255的均值和方差,我們也可以
求得0到120的方差,函式裡面的hist.rowRange(0,255)可以改為hist.rowRange(0,120)
結果儲存在convr和Mean中,其中convr為方差,Mean為均值。
如果我們想求取整幅圖的均值和方差,我們可以通過reshape函式把img,展開為一行,然後再呼叫meanStdDev函式即可以求出整張圖片的方差和均值。