mean関数でMatの平均輝度を求める

mean関数でMatの平均輝度を求めることができます。また、第2引数にマスク画像を指定すると、マスク画像において0でないピクセル位置と対応する第1引数のMatの平均輝度を求めることができます。第2引数を省略した場合には画像全体の平均を計算します。下の画像は1つ目が平均輝度を求める対象である第1引数に指定した画像、2つ目はマスク画像です。出力は次のようになるはずです。

   Overall  :     7 
      Mask   :   100

add1

mean-mask

#include "opencv/cv.h"
#include "opencv/highgui.h"
using namespace cv;
int main(){
    Mat img1 = Mat::zeros(500, 500, CV_8UC1);
    circle(img1, cv::Point(200, 250), 100, Scalar(100), 30, 4);
    
    Mat mask = Mat::zeros(500, 500, CV_8UC1);
    circle(mask, cv::Point(200, 250), 100, Scalar(255), 30, 4);
    
    printf("Overall : %d\n";,(int)mean(img1)[0]);
    printf("Mask    : %d\n";,(int)mean(img1,mask)[0]);
    
    imshow("img1",img1);
    
    waitKey(0);
    return 0;
}