opencv中封裝了一個專門用于求解cv::Mat均值的函數(shù),即cv::mean(cv::Mat),該函數(shù)會得到Mat中各個通道的均值,若要獲取指定通道的均值,做進一步解析即可。
下面給出opencv的官方說明:
Operations on Arrays
Scalar mean(InputArray src, InputArray mask = noArray());
#includeiostream> #includeopencv2/opencv.hpp> #includectime> using namespace std; using namespace cv; int main(void) { cv::Mat src = cv::Mat::zeros(5, 5, CV_32FC1); cv::Mat mask = cv::Mat::zeros(5, 5, CV_8UC1); int rows = src.rows; int cols = src.cols; cv::circle(mask, cv::Point(2, 2), 2, 255, -1); int number = 0; float sum = 0.0f; for (int i = 0; i rows; ++i) { for (int j = 0; j cols; ++j) { if (mask.atuchar>(i, j) == 255) { src.atfloat>(i, j) = rand() % 255+rand()%100/100.0f; sum += src.atfloat>(i, j); number++; } } } float result=cv::mean(src, mask==255)[0]; float mean_ = sum / number; cout "result:" result endl; cout "mean_" mean_ endl; system("pause"); return 0; }
圖1 自定義矩陣數(shù)據(jù)
圖2 掩膜
圖3 計算結果對比
為了便于對比數(shù)據(jù),創(chuàng)建了一個5*5的矩陣和掩膜,進行了平均值的計算和mean函數(shù)的調用,所得結果一致,上述測試可供大家了解函數(shù)的使用~
到此這篇關于OpenCV計算平均值cv::mean的文章就介紹到這了,更多相關OpenCV計算平均值cv::mean內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!